Laravel模型在两个表之间创建两次关系

时间:2017-12-18 08:59:35

标签: laravel laravel-5 eloquent

我正在尝试在Laravel模型中创建两个表,用户和消息之间的关系,因为用户可以向另一个用户发送消息,这样我就有两个外键( fromUser_id toUser_id ),如下图所示。

enter image description here

对于第一个关系,我将直接创建一个名为messages的函数

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

然而,根据Laravel的标准命名,我不知道如何命名第二关系,因为我知道它也应该是消息,这显然会发出错误,因为我们有第一个具有相同名称的函数。

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

请您告诉我该怎么命名以及这将如何影响模型。

1 个答案:

答案 0 :(得分:2)

好吧,你不应该使用简单的messages作为关系,而是使用receivedMessagessentMessages这样:

public function sentMessages()
{
    return $this->hasMany('App\Models\Message', 'fromUser_id');
}

public function receivedMessages()
{
    return $this->hasMany('App\Models\Message', 'toUser_id');
}