我想将所有$ id值传递给下面代码中的where子句,第3行。但是因为我试图返回$ friend它是null。我是否错误地解决了$ id值?或者我在查询中弄错了?我检查了我的数据库,它应该返回2行。
我还通过返回它来检查$ id并返回我期待的内容,我想我在$ friend行的查询中出错了。
$x = user->id;
$id = DB::table('requests')->select('id')->where('id', '=', $x)->get();
$friend = DB::table('users')->where('id', 'in', $id)->get();
答案 0 :(得分:7)
你需要使用whereIn()
,对整个交易来说可能更好的选择是:
$ids = DB::table('requests')->where('id', $x)->lists('id');
$friend = DB::table('users')->whereIn('id', $ids)->get();
请注意whereIn()的第二个参数需要是一个数组。
答案 1 :(得分:0)
您可以在一个查询中完成所有操作:
$friends = DB::table('users')->whereIn('id', function ($query) use ($user) {
$query->select('id')->from('requests')->where('id', $user->id);
})->get();
答案 2 :(得分:0)
你想要的是whereIn
(向下滚动一下)。它也可以使用whereNotIn
。
$userIds = [1, 2, 3];
$friend = DB::table('users')->whereIn('id', $userIds)->get();
或whereNotIn
:
$userIds = [1, 2, 3];
$friend = DB::table('users')->whereIn('id', $userIds)->get();
查看Laravel查询构建器支持的所有可能的高级where子句。