我创建了3个数据库表:
用户 - ID - 用户名 - ......
讯息 - ID - 标题 - 消息
messages_user - messages_id - 用户身份 - receive_user_id
messages_user 中的字段设置为相应表的外键。
我想要的功能是: 我希望获得用户的所有消息,无论是他自己创建的还是刚收到的消息。
现状: 通过使用我的用户模型内部,我能够获得用户创建的所有消息:
return $this->belongsToMany('App\Messages', 'messages_user');
我目前的问题是,我无法通过一个查询获得收到的消息。我可以开始第二个查询,但我确信他们是以另一种方式实现这一目标的方式。
这是可能的,如果,如何? :)
提前致谢!
答案 0 :(得分:0)
请试试这个
模型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();
}