繁体   English   中英

其中laravel 8中具有多维数组的条件

[英]wherein condition with multidimensional array in laravel 8

我想在 Laravel 查询中将 whereIn 与多维数组一起使用。

我的主要要求是

有一个多维数组就像

$language = [ 
   [ 'name' => 'english', 'level' => 'advance', 'lang_id' => '8' ],
   [ 'name' => 'urdu', 'level' => 'fluant', 'lang_id' => '10' ],
   [ 'name' => 'germany', 'level' => 'basic', 'lang_id' => '12' ]
]

$app_lang_arr = [];
$app_lang_arr_level = [];

foreach($language as $lang)
{
    array_push($app_lang_arr, $lang['lang_id']);
    array_push($app_lang_arr_level, $lang['level']);
}

$applicant = $user_arr->whereHas('LanguageSkills', function ($query) use ($app_lang_arr, $app_lang_arr_level) {
                $query->whereIn('language_id', $app_lang_arr)->whereIn('level', $app_lang_arr_level);
            })->where('activate_deactivate', 1)
            ->orderBy('updated_at', 'DESC')
            ->get();

现在我的要求是

 select all from users join language_skills on language_skill.language_id == user.language_id where language_skill.language_id == $lang['lang_id'] AND language_skill.level == $lang['level'];

此查询在循环中。 我想在 Laravel 中将此查询与 whereIn 一起使用。 或者还有其他方法可以完成这项任务吗?

我猜你可以在你的子句中使用orWhereHas

foreach($language as $lang)
{
    $user_arr->orWhereHas('LanguageSkills', function ($query) use ($lang) {
                    $query->where('language_id', $lang['lang_id'])
                          ->where('level', $lang['level']);
                });
}                                                                                                                                           

$applicant = $user_arr->where('activate_deactivate', 1)
            ->orderBy('updated_at', 'DESC')
            ->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM