【问题标题】:fetch all users of a chat conversation获取聊天对话的所有用户
【发布时间】:2021-06-05 12:23:54
【问题描述】:

我正在尝试创建一个始终有 2 个人的聊天系统。 一个用户可以进行许多不同的对话

我用 2 个表格来设计它:ConversationsMessages

对话表

public function up()
    {
        Schema::create('conversations', function (Blueprint $table) {
            $table->id();

            $table->unsignedBigInteger('id_me');
            $table->unsignedBigInteger('id_you');

            $table->foreign('id_me')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('id_you')->references('id')->on('users')->onDelete('cascade');

            $table->timestamps();
        });
    }

消息表

 public function up()
    {
        Schema::create('messages', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('conversation_id');
            $table->text('msg');
            $table->boolean('read')->default(false);

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('conversation_id')->references('id')->on('conversations');
            $table->timestamps();
        });
    }

对话模型

public function messages()
    {
        return $this->hasMany(Message::class);
    }

用户模型

public function conversations()
    {
        return $this->hasMany(Conversation::class, 'id_me')->orWhere('id_you', $this->id);
    }

目前我可以使用关系 $user->conversations 获取对话,但我需要获取每个对话的用户,但我不知道该怎么做。 我不知道如何处理它,有什么建议吗?谢谢!

【问题讨论】:

    标签: laravel


    【解决方案1】:

    我认为你可以做到。

    对话模型

    public function me()
    {
        return $this->belongsTo(User::class, 'id_me');
    }
    
    
    public function you()
    {
        return $this->belongsTo(User::class, 'id_you');
    }
    

    然后使用这些 $conversation->me$conversation->you

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多