使用 whereor 和 wherein Laravel 5.4 对 sql 查询进行项目数组检查
Do Array of items check on sql query using whereor and wherein Laravel 5.4
我有一个 mysql 查询,我需要在其中使用 Or 检查 2 列中的值数组。 简而言之,我有一个数组需要使用 Or 条件检查 2 列。
使用sql
SELECT *
FROM table_name
WHERE col_1 IN (1, 8, 3)
OR
WHERE col_2 IN (1, 8, 3)
使用laravel
$mu = DB::table('users')
->join('table_a', 'users.id', '=', 'table_a.user_id')
->select('table_a.user_id')
//This are all AND
->where('table_b.search_status','available')
->where('table_b.role','<>',2)
//This 2 parts needs to be in OR clause
->whereIn('table_b.lang',$seeks)
->whereIn('table_b.lang_2',$seeks)
//This is AND too
->whereIn('table_a.language_id',$lang)
->get()->pluck('user_id')->toArray();
我想做类似的事情:
->where(function($q)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
})
但给出错误:undefined $seeks.
只需替换为:-
->where(function($q) use ($seeks)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
});
进入
->where(function($q) use ($seeks)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
});
使用闭包 where 条件来包装它们。
$mu = DB::table('users')
->join('table_a', 'users.id', '=', 'table_a.user_id')
->select('table_a.user_id')
->where('table_b.search_status', 'available')
->where('table_b.role','<>', 2)
->where(function ($query) use ($seeks) {
$query->whereIn('table_b.lang', $seeks)
->orWhereIn('table_b.lang_2', $seeks);
})
->whereIn('table_a.language_id', $lang)
->get()->pluck('user_id')->toArray();
我有一个 mysql 查询,我需要在其中使用 Or 检查 2 列中的值数组。 简而言之,我有一个数组需要使用 Or 条件检查 2 列。
使用sql
SELECT *
FROM table_name
WHERE col_1 IN (1, 8, 3)
OR
WHERE col_2 IN (1, 8, 3)
使用laravel
$mu = DB::table('users')
->join('table_a', 'users.id', '=', 'table_a.user_id')
->select('table_a.user_id')
//This are all AND
->where('table_b.search_status','available')
->where('table_b.role','<>',2)
//This 2 parts needs to be in OR clause
->whereIn('table_b.lang',$seeks)
->whereIn('table_b.lang_2',$seeks)
//This is AND too
->whereIn('table_a.language_id',$lang)
->get()->pluck('user_id')->toArray();
我想做类似的事情:
->where(function($q)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
})
但给出错误:undefined $seeks.
只需替换为:-
->where(function($q) use ($seeks)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
});
进入
->where(function($q) use ($seeks)
{
$q->whereIn('table_b.lang',$seeks)
->orWhere(whereIn('table_b.lang_2',$seeks));
});
使用闭包 where 条件来包装它们。
$mu = DB::table('users')
->join('table_a', 'users.id', '=', 'table_a.user_id')
->select('table_a.user_id')
->where('table_b.search_status', 'available')
->where('table_b.role','<>', 2)
->where(function ($query) use ($seeks) {
$query->whereIn('table_b.lang', $seeks)
->orWhereIn('table_b.lang_2', $seeks);
})
->whereIn('table_a.language_id', $lang)
->get()->pluck('user_id')->toArray();