У меня есть две таблицы «акции» и «продукты». У них есть отношения один ко многим.
Модель -
Product.php
public function stocks(){
return $this->hasMany('Modules\Stock\Entities\Stock');
}
Модель - Stock.php
public function product(){
return $this->belongsTo('Modules\Product\Entities\Product')->withTrashed();
}
при поиске акций я также хочу искать по названию продукта. У меня есть поиск, созданный для поиска по ключевым словам, и дополнительный флажок для низких запасов. Поэтому, если я хочу найти товар с низким запасом, например, например, «Обувь», он должен показать мне туфли, количество которых мало.
Это работает идеально, если тип поиска находится среди столбцов таблицы запасов. Но когда я хочу выполнить поиск записей по названию продукта (в таблице продуктов), отфильтруйте эти результирующие записи по низким запасам (в таблице запасов). результаты не отображаются.
class ProductName implements Filter
{
public static function apply(Builder $builder, $value, $checkbox)
{
if($checkbox == null) {
$a = $builder->whereHas ('product', function ($query) use ($value)
{
$query->where('name', 'LIKE', '%' . $value . '%'); //this works fine.
});
} else {
$a = $builder->whereHas ('product', function ($query) use ($value) {
$query->where('name', 'LIKE', '%' . $value . '%');
})->whereRaw('quantity < low_stock_threshold'); //This is meant for two search filters;one for searching in product table then filtering the results againtst stock table according to low quantity.
}
return $a;
}
}
закомментированная строка, которая не работает. Пожалуйста, помогите, если кто-то может это исправить.