这两张桌子在laravel中会有什么样的关系?

时间:2014-04-02 06:07:22

标签: php laravel relationship

我在数据库中有四个表:

  1. 用户(用于存储用户详细信息)
  2. 对话(用于存储会话ID)。
  3. conversationsmember(用于存储会话成员)
  4. conversationsreply(用于存储会话回复)
  5. 用户将进行多次对话,每次对话都会有其成员和回复。

    以下是详细信息:

    用户迁移:

    $table->increments('id');
    
    $table->string('name', 32);
    $table->string('username', 32);
    $table->string('email', 320);
    $table->string('password', 64);
    
    $table->timestamps();
    

    对话迁移:

    $table->increments('id');
    $table->timestamps();
    

    conversationsmembers migration:

    $table->increments('id');
    
    $table->integer('conversation_id');
    $table->integer('user_id'); 
    
    $table->timestamps();
    

    conversationsreply migrations

    $table->increments('id');
    
    $table->integer('conversation_id');
    $table->integer('user_id'); 
    
    $table->timestamps();
    

    现在在用户模型中,我需要定义用户表和会话表之间的关系。由于它们没有直接连接,我使用hasManyThrough关系。

    ..应用/模型/ user.php的

    ...
        public function conversations()
            {
                return $this->hasManyThrough('Conversation', 'ConversationsMember', 'conversation_id', 'id');
            }
    ...
    

    当我尝试使用它时,它显示一个空白数组。

1 个答案:

答案 0 :(得分:0)

我会尝试一个belongsToMany关系,其中conversationsmembers是你的数据透视表。

public function conversations()
{
    return $this->belongsToMany('Conversation', 'conversationsmembers');
}

您可能还想在对话模型中定义关系的反转:

public function users()
{
    return $this->belongsToMany('User', 'conversationsmembers');
}

我对您的迁移有点混淆,所以我不确定您想要的是什么。