Laravel WhereIn 或 Wherein 与 Where
Laravel WhereIn or Wheren with where
我正在尝试设计一个查询,但我不知道从哪里开始。
我会输入我想要的功能。
Items::whereIn('id',$ids)->orWhereIn('id_2',$ids)->where('type','!=',$type)->get();
这就是我希望它工作的方式,但我知道它不会工作,因为它只会忽略 WHERE type=$type 查询,因为 whereIN 已经提取了不符合 Where 查询的记录。
基本上我想要这个的 eloquent 版本...
"SELECT * FROM items WHERE type!=$type AND (id IN (1,2,3) OR id_2 IN(1,2,3))"
你会想做这样的事情:
Item::where('type','!=','ATypeTest')->where(function ($query) {
$query->whereIn('id',[1, 2, 3])->orWhereIn('id_2',[1, 2, 3]);
})->get();
查看 Laravel 文档以了解有关分组的更多信息:https://laravel.com/docs/5.3/queries#parameter-grouping
这将顺便生成以下 SQL 查询:
SELECT * FROM "items" WHERE "type" != `ATypeTest` AND ("id" in (1, 2, 3) OR "id_2" in (1, 2, 3))
您试图做的是对语句进行分组:https://laravel.com/docs/5.3/queries#parameter-grouping
你需要做的是把代码写成这样:
Items::where('type', '!=', $type)
->where(function ($query) use ($ids) {
$query->whereIn('id',$ids)
->orWhereIn('id_2',$ids);
})
->get();
这样您就可以对子句中的 where 进行分组。
$user_id = 2 ;
$user_ids = [2,3,4,5,6,7,78,87,88,90] ;
where('id',$user_id) 与 whereIn('id',$user_ids)
注意:where 将仅与数组的第一个值或单个值进行比较。 whereIn 将比较数组的每个索引。
我正在尝试设计一个查询,但我不知道从哪里开始。
我会输入我想要的功能。
Items::whereIn('id',$ids)->orWhereIn('id_2',$ids)->where('type','!=',$type)->get();
这就是我希望它工作的方式,但我知道它不会工作,因为它只会忽略 WHERE type=$type 查询,因为 whereIN 已经提取了不符合 Where 查询的记录。
基本上我想要这个的 eloquent 版本...
"SELECT * FROM items WHERE type!=$type AND (id IN (1,2,3) OR id_2 IN(1,2,3))"
你会想做这样的事情:
Item::where('type','!=','ATypeTest')->where(function ($query) {
$query->whereIn('id',[1, 2, 3])->orWhereIn('id_2',[1, 2, 3]);
})->get();
查看 Laravel 文档以了解有关分组的更多信息:https://laravel.com/docs/5.3/queries#parameter-grouping
这将顺便生成以下 SQL 查询:
SELECT * FROM "items" WHERE "type" != `ATypeTest` AND ("id" in (1, 2, 3) OR "id_2" in (1, 2, 3))
您试图做的是对语句进行分组:https://laravel.com/docs/5.3/queries#parameter-grouping
你需要做的是把代码写成这样:
Items::where('type', '!=', $type)
->where(function ($query) use ($ids) {
$query->whereIn('id',$ids)
->orWhereIn('id_2',$ids);
})
->get();
这样您就可以对子句中的 where 进行分组。
$user_id = 2 ; $user_ids = [2,3,4,5,6,7,78,87,88,90] ;
where('id',$user_id) 与 whereIn('id',$user_ids)
注意:where 将仅与数组的第一个值或单个值进行比较。 whereIn 将比较数组的每个索引。