Я пытаюсь построить запрос для таблицы данных laravel, но с оговоркой не работает на двух столбцах, как я пытался ниже.
$row = DB::table('composite_inventories as u')->select([
'u.id',
'u.purchase_item_name',
'u.sales_item_name',
DB::raw('GROUP_CONCAT(p.itemcode) as purchase_items'),
DB::raw('GROUP_CONCAT(s.itemcode) as sales_items')
])->leftJoin('composite_has_inventories as us', 'u.id', '=', 'us.composite_inventory_id')
->leftJoin('inventories as s', function($join)
{
$join->on('US.inventory_id', '=', 's.id');
$join->on('us.type','=',DB::raw("'sale'"));
})
->leftJoin('inventories as p', function($join)
{
$join->on('US.inventory_id', '=', 'p.id');
$join->on('us.type','=',DB::raw("'purchase'"));
})
->groupBy('u.id', 'u.purchase_item_name','u.sales_item_name');
$datatable = app('datatables')->of($row);
if($keyword=$request->get('search')['value'])
{
$datatable->filterColumn('purchase_items',function($row,$keyword){
$row->having('purchase_items','LIKE','%$keyword%')
});
$datatable->filterColumn('sales_items',function($row,$keyword){
$row->having('sales_items','LIKE','%$keyword%')
});
}
return $datatable->make(true);
Пожалуйста, посмотрите запрос выше. У меня есть два псевдонима purchase_items и sales_items. Когда я вписываю что-то в фильтр поиска данных, он не может предоставить мне соответствующие записи. Он должен проверить значение в элементе purchase_items или sales_items. если я поставлю условие в главном запросе, то это сработает.
см. ниже изображение вывода запроса перед применением фильтра
если я ищу «A123» в датируемом поисковом фильтре, вывод должен быть таким, как показано ниже, но мой столбец фильтра не работает так
Задача ещё не решена.
Других решений пока нет …