laravel 5,where子句有多个值

时间:2015-10-07 16:17:34

标签: laravel where-clause

我想将所有$ 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();

3 个答案:

答案 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子句。