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();
}
圣钼,这正是我想知道!我需要添加缺少的Model(messages_user)并将我的关系表重命名为“messages_users”。非常感谢您的帮助,我会尽量使用我从您那里学到的以下功能。 :) –
编辑:唯一缺少的东西现在是消息本身。我会试着去掌握它,并在成功完成后更新这篇文章。 :) –
标记为解决方案的消息。我只需要用('messages')将' - >添加到查询中。 :) –