Как разбить конструктор запросов в laravel 5.2? - PullRequest
0 голосов
/ 16 октября 2019

У меня есть три переменные, и я хочу добавить определенное условие where только в том случае, если эти переменные не являются нулевыми или пустыми.

$brand = $request->brand == 0 ? "" : $request->brand ;
$category = $request->category == 0 ? "" : $request->category ;
$subcategory = $request->subcategory == 0 ? "" : $request->subcategory;

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
            ->leftJoin('brands','items.brand_id','=','brands.id')
            ->leftJoin('category','items.category_id','=','category.id')
            ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items->where('items.subcategory_id',$subcategory);
}
$items->get();

Теперь я получаю ошибку ниже

'Подсветка \ База данных \ Eloquent \ Builder не может быть преобразована в строку '

Ответы [ 3 ]

2 голосов
/ 16 октября 2019

Попробуйте использовать эту часть, как это. присвойте свою переменную $items каждому условию.

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
            ->leftJoin('brands','items.brand_id','=','brands.id')
            ->leftJoin('category','items.category_id','=','category.id')
            ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items = $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items = $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items = $items->where('items.subcategory_id',$subcategory);
}
$items = $items->get();
2 голосов
/ 16 октября 2019

$items является экземпляром Eloquent Builder, поэтому возьмите вывод в другую переменную:

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
                    ->leftJoin('brands','items.brand_id','=','brands.id')
                    ->leftJoin('category','items.category_id','=','category.id')
                    ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items->where('items.subcategory_id',$subcategory);
}

$data = $items->get();
0 голосов
/ 16 октября 2019
$Items = DB::table('Item')
            ->join('brands','items.brand_id','=','brands.id')
            ->Join('category','items.category_id','=','category.id')
            ->Join('subcategory','items.subcategory_id','=','subcategory.id');
             ->select('items.*','brands.brand_name','category.category_name',
               'subcategory.subcategory_name')
            ->get();

      dd($Items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...