Php 与键上的条件有关的Laravel ORM多对多关系
我有一个Php 与键上的条件有关的Laravel ORM多对多关系,php,laravel,laravel-4,eloquent,relationship,Php,Laravel,Laravel 4,Eloquent,Relationship,我有一个成员表,如下所示: ------------------ | id | name | ... ------------------ 1 John 2 Jane 3 Bill 和一个关系表来存储它们的关系 ---------------------------- | from_id | to_id | status | ---------------------------- 1 2 friend 2
成员
表,如下所示:
------------------
| id | name | ...
------------------
1 John
2 Jane
3 Bill
和一个关系
表来存储它们的关系
----------------------------
| from_id | to_id | status |
----------------------------
1 2 friend
2 3 friend
第一记录说:1号和2号成员是朋友。
member#1是#2的朋友
,member#2是#1的朋友
在Laravel中,我如何拥有一个关系来获得一个成员的所有朋友?我需要检查两列
from_id
和to_id
,在我的成员
模型中使用此语法,我无法获得它
会员模式
public function friends(){
return $this->belongsToMany('Member', 'relations', 'from_id', 'to_id' );
}
这只返回成员id为来自成员id的记录
如果member=1,我想要这个查询
有什么帮助吗
谢谢。使用Laravel ORM,这不是我问题的正确答案,但我正在使用它,它会产生相同的结果。我希望如果其他人知道正确答案,在这里与我们分享。谢谢 在
成员
模型中定义此方法:
return Member::join('relations', function($join) use($limit) {
$join->on('relations.from_id', '=', 'members.id')
->orOn('relations.to_id', '=', 'members.id');
})
->where(function($where){
$where->where('relations.from_id', '=', $this->id)
->orWhere('relations.to_id', '=', $this->id);
})
->where('members.id', '!=', $this->id)
->groupBy('members.id')
->get();
因此,我可以使用:
$member = Member::find(1); // for example user#1
$member->friends(); // a list of eloquent objects of members.
$member = Member::find(1); // for example user#1
$member->friends(); // a list of eloquent objects of members.