введите описание изображения здесь Я пытаюсь реализовать поиск отношений "многие ко многим" с 2 моделями. я получаю входные данные из нескольких значений флажков и хочу искать элементы, которые соответствуют A или B, когда есть ввод данных.
Я прочитал этот URL и написал ту же логику. https://laracasts.com/discuss/channels/laravel/many-to-many-relationship-with-2-pivot-table-data-search
public function search(Request $request)
{
$languages = $request->lang;
$fields = $request->field;
$agencies = Agency::with('languages')->with('specialized_fields')
->orWhereHas('languages', function($query) use ($languages) {
$query->whereIn('language_id', $languages);
})
->orWhereHas('specialized_fields', function($query) use ($fields) {
$query->whereIn('specialized_field_id', $fields);
})
->get();
dd($agencies);
}
Я ожидал выполнить поиск A или B, но вместо этого получил эту ошибку.
Аргумент 1 передан в Illuminate \ Database \ Query \ Builder :: cleanBindings() должен иметь тип массива с указанным нулевым значением, который вызывается в /var/www/jtf/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php в строке 907
кажется, что это вызывает эту ошибку, если либо A, либо B имеет значение null, но почему ??? Метод OrWhereHas работает только тогда, когда есть вход ??
/ добавлена информация /
мое сообщение об ошибке моя модель агентства
класс Агентство расширяет Model {protected $охраняется = ['id'];
public function languages(){
return $this->belongsToMany('App\Language');
}
public function specialized_fields(){
return $this->belongsToMany('App\SpecializedField');
}
public function region(){
return $this->hasOne('App\Region');
} }