<?PHPclass User extends Eloquent {public function frIEnds() { return $this->belongsToMany('User','frIEndships','user_ID','frIEnd_ID')->orWhere($this->ID,'=','frIEnd_ID'); }}+----+---------+-----------+----------+---------------------+---------------------+| ID | user_ID | frIEnd_ID | state | created_at | updated_at |+----+---------+-----------+----------+---------------------+---------------------+| 1 | 3 | 1 | accepted | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 || 2 | 2 | 3 | accepted | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |+----+---------+-----------+----------+---------------------+---------------------+
当我寻找用户ID为3的朋友时,上面的关系接近工作我得到了用户1和3,但显然我想要1和2.
友谊表
user_ID:请求友谊的用户ID
frIEnd_ID:目标朋友的用户ID
州:友谊是否正在等待,接受或阻止.
created_at和updated_at
我知道有一些解决方案来自Laravel Many to many self referencing table only works one way,我可以从关系的两边检索朋友,但我必须是两行,例如,如果用户1和3是朋友,那么在一行user_ID = 3和frIEnd_ID = 1,在下一行反之亦然. (或者,如果我没有两行,我必须进行两次查询).
您不应该尝试将两行应该转换成一行,但如果您要尝试这样做,那么您绝对不需要两次访问数据库:select * from users where (user_ID = :user_ID and frIEnd_ID = :frIEnd_ID) or (frIEnd_ID = :frIEnd_ID and user_ID = :user_ID)
在Laravel中将是:
Users::whereRaw('(user_ID = ? and frIEnd_ID = ?) or (frIEnd_ID = ? and user_ID = ?)',[ $user_ID,$frIEnd_ID,$user_ID]);
你也可以做分组来分组,但这有点复杂.
总结以上是内存溢出为你收集整理的php – Laravel ORM友谊关系,无重复全部内容,希望文章能够帮你解决php – Laravel ORM友谊关系,无重复所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)