Laravel - belongsToMany多个表

问题描述:

我创建3个数据库表:Laravel - belongsToMany多个表

用户 - ID - 用户名 - ...

消息 - ID - 标题 - 消息

messages_user - messages_id - USER_ID - 在messages_user receive_user_id

字段被设置为外键根据表。

我想要实现的功能是: 我想获取用户的所有消息,不管是他自己创建的还是他刚收到的。

现状: 我能得到的所有消息通过使用我的用户模型中创建了一个用户:

return $this->belongsToMany('App\Messages', 'messages_user'); 

目前我的问题是,我没能拿到收到的消息中以及一个查询。我可以开始第二个查询,但我确定他们是以另一种方式实现这一点的一种方式。

这是可能的,如果,怎么样? :)

在此先感谢!

请试试这个

型号users.php

class Users extends Model { 
    // Relation with messages_user table 
     public function messages_user() { 
     return $this->hasMany('App\Messages_user','id'); 
     } 
} 

型号messages.php

class Messages extends Model { 
    // Relation with messages_user table 
     public function messages_user() { 
     return $this->hasMany('App\Messages_user','id'); 
     } 
} 

型号messages_user.php

class Messages_user extends Model { 
    // Relation with users table 
     public function send_user() { 
     return $this->belongsTo('App\Users','user_id'); 
     } 

     public function receive_user() { 
     return $this->belongsTo('App\Users','receive_user_id'); 
     } 
    // Relation with messages table 
     public function messages() { 
     return $this->belongsTo('App\Messages','messages_id'); 
     } 

} 

在控制器

public function user_all_messages($id) { 
     $data = Messages_user::with('send_user)->with('receive_user')where('user_id',$id)->orWhere('receive_user_id',$id)->get(); 
    } 
+0

圣钼,这正是我想知道!我需要添加缺少的Model(messages_user)并将我的关系表重命名为“messages_users”。非常感谢您的帮助,我会尽量使用我从您那里学到的以下功能。 :) –

+0

编辑:唯一缺少的东西现在是消息本身。我会试着去掌握它,并在成功完成后更新这篇文章。 :) –

+0

标记为解决方案的消息。我只需要用('messages')将' - >添加到查询中。 :) –