【发布时间】:2016-10-26 13:10:50
【问题描述】:
所以我有这个非常大的搜索查询,我正在尝试从搜索中删除所有阻止用户搜索的用户。
我真的很困惑,转过身来,希望得到任何帮助。
blocked_users 表包含
id
user_id
blocked_user_id
当一个用户阻止另一个用户时,会创建一行。现在到目前为止,我注意到如果用户没有阻止任何他们根本没有出现在搜索中的人(我的猜测是因为加入,如果用户不存在于表中,那么他们不会出现??。)
这是我的查询的简短 sn-p
$query = User::join('user_profiles', 'users.id', '=','user_profiles.user_id');
$query->Join('blocked_users', 'users.id', '=', 'blocked_users.user_id');
$query->whereNotIn('blocked_users.blocked_user_id',[Auth::user()->id])->select('users.*','user_profiles.*');
编辑
好的,如果我的用户 ID 是 1,并且用户 2 不希望我再联系他们,甚至不希望出现在我的搜索中,他们会阻止我,这会在表格中添加一行
int,user_id=2,blocked_user_id=1
如果我进行搜索,我不希望用户 2 出现在用户 1 的搜索中。
但是对于 leftJoin,如果我的用户 ID 在 block_user_id 的任何一行中,无论是谁阻止了我,都不会显示任何用户。
我不确定我还能如何提供可视化数据。整个查询非常庞大并且运行良好。我只是不确定如何组合 where 子句。
【问题讨论】:
标签: php mysql laravel eloquent