Laravel关系枢纽表名称麻烦

时间:2019-03-30 11:06:27

标签: laravel

在我的应用中,我有2种对话类型:用户之间的普通私人对话和对用户产品感兴趣的人们的对话。

在用户模型中,我声明了以下关系:

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

public function conversationsProduct()
{
    return $this->belongsToMany('App\ConversationProduct', 'conversation_product_user', 'user_id', 'product_id');
}

其中“ conversation_user”和“ conversation_product_user”是“ users”-“ conversation”和“ users”-“ conversations_product”表之间的数据透视表。

我的session_user数据透视表具有session_id和user_id表属性,但是session_product_user数据透视表具有其他属性product_id。

在我的会话模型中,我有:

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

public function messages()
{
    return $this->hasMany('App\Message');
}

在ConversationProduct模型中,我写道:

protected $table = 'conversations_product';

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

public function messages()
{
    return $this->hasMany('App\MessageProduct');
}

在我的ConversationProductController中,我可以找到用户对话:

public function showUserConversationsProduct(Request $request){
    $user_id = $request->user_id;

    //var_dump($user_id);

    $userData = User::where('id', $user_id)->with('conversationsProduct')->first();

}

这是我的问题:在控制器中-> with('conversationsProduct')的关系与session_product_user无关,但与session_user数据透视表有关。如果我在关系中添加第二个参数作为“ conversation_product_user”,我就无法解决它为什么发生的情况:

public function conversationsProduct()
{
    return $this->belongsToMany('App\ConversationProduct', 'conversation_product_user', 'user_id', 'product_id');
}

我需要受保护的$ table ='conversations_product';将我的ConversationsProductController @ store指向保存对话的位置,但是我认为识别适当的关系可能会有问题。

非常感谢您的帮助。我附上我的数据库关系照片。

db relation

0 个答案:

没有答案