Может быть что-то вроде этого:
//Start your query as usual, but just join the user data in. Do not use paginate function yet as this will trigger the query to execute.
$productQuery = Product
::selectRaw('products.*, users.name as user_name')
->join('users', 'users.id', 'products.user_id')
->orderBy($orderBy, $orderType);
//Check (for each param) if you want to add where clause
//You dont need to nest the where function, unless you have more filters, and need to group statements together
if(!empty(trim($searchKey))) {
$productQuery->where('name', 'like', '%' . trim($searchKey) . '%');
}
//Execute query
$products = $productQuery->paginate(10);
Обратите внимание, что построитель запросов касается БД только с указанными c функциями, такими как chunk
, get
, first
или paginate
(там более). При создании запроса у вас есть полная свобода добавления фильтров / упорядочения / группировки, пока вы не выполните запрос.
Надеюсь, это поможет, пожалуйста, дайте мне знать, сработало ли это для вас.