laravel 5,具有多个值的 where 子句

laravel 5, where clause with multiple values

我想将所有 $id 值传递给 where 子句,下面代码的第 3 行。但是当我尝试 return $friend 时,它是空的。我是否错误地处理了 $id 值?或者我在查询中弄错了?我检查了我的数据库,它应该 return 2 行。

我还通过 return 检查了 $id,它 return 正是我所期待的,我想我在 $friend 行的查询中弄错了。

$x = user->id;  

$id = DB::table('requests')->select('id')->where('id', '=', $x)->get();

$friend = DB::table('users')->where('id', 'in', $id)->get();

您可以在一个查询中完成所有操作:

$friends = DB::table('users')->whereIn('id', function ($query) use ($user) {
    $query->select('id')->from('requests')->where('id', $user->id);
})->get();

您需要使用 whereIn(),也许对整个交易来说更好的选择是:

$ids = DB::table('requests')->where('id', $x)->lists('id');
$friend = DB::table('users')->whereIn('id', $ids)->get();

注意whereIn()的第二个参数需要是数组

您想要的是 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 子句。