我不确定这是否显而易见,而且我没有看到它,因为它已经很晚了,但是现在我正在努力解决以下问题:
我试图找出某处是否有匹配。因此,个人资料2喜欢个人资料1,个人资料1也喜欢个人资料2.这就是匹配。
我尝试过组合数组,但那无处可去。 ._。我如何在Laravel查询中存档?
答案 0 :(得分:3)
$likey = DB::table('likes AS liker')
->join('likes AS liked', 'liker.liked_id', '=', 'liked.liker_id')
->select('liked.liker_id', 'liked.liked_id')
->where('liker.liker_id', '=', 'liked.liked_id')
->get();
这些方面的东西。
编辑:只是为了澄清这个解决方案,这样你就不会陷入复制粘贴的诱惑,也从不弄清楚刚刚发生了什么事情;
我们加入(使用INNER JOIN,非常重要)这个表本身就很简单因为(就像你说的那样)我们必须检查两次。首先是liker(首先喜欢someones profile的人),而不是喜欢(回复者喜欢回复的用户)的用户。考虑到这一点,我们加入此表,检查第二个表上liker_id的第一个表中的likes_id。
哪个应该给我们加入的结果看起来像:
liker.liker_id | liker.liked_id | liked.liker_id | liked.liked_id
-----------------------------------------------------------------
2 | 1 | 1 | 2
1 | 2 | 2 | 1
请注意,这会给我们重复! (非常重要)。
考虑到这一点,我会考虑重新分配你的桌子。例如,添加名为" likes_back"的布尔列。将为您提供更便宜,更清晰的查询,而不是做任何事情......