У меня есть база данных с товарными запасами. Также у меня много пользователей, где продукты принадлежали разным пользователям. Поэтому мне нужно написать запрос с несколькими условиями, где поиск должен быть в разных столбцах таблицы, так что это будет пара ->orWhere()
операторов. Но для поиска нужно найти все товары, которые принадлежали одному и тому же пользователю. Но если у меня много ->orWhere()
условий, запрос начинает поиск товаров у других пользователей, где другие условия запроса совпадают ("title" или "product_number").
Так как я могу изменить свой код, где я могуполучить все продукты с ключевым словом поиска, где продукты под тем же пользователем?
Вот мой код:
public function searchProduct(Request $search){
$search_item = $search->search;
$user = User::where('id', Auth::user()->id)->first();
$inventory = Inventory::where('client_id', $user->client_id)
->where('product_number', 'like', "%{$search_item}%")
->orWhere('title', 'like', "%{$search_item}%")
->orWhere('other_product_numbers', 'like', "%{$search_item}%")
->with(['deliveryRecord', 'orderInRecord', 'sellRecord'])
->paginate(50);
$cleint_currency = SettingsClientCurrency::where('client_id', $user->client_id)->first();
$inventory_products = Inventory::where('client_id', $user->client_id)->with('orderInRecord')->get();
$inventory_total = 0;
foreach ($inventory_products as $product) {
$ordersin = $product->orderInRecord;
foreach ($ordersin as $orderin) {
$inventory_total += $orderin['price'] * $orderin['units'];
}
}
return view('layouts.inventory.inventory')
->with('inventory', $inventory)
->with('inventory_total', $inventory_total)
->with('cleint_currency', $cleint_currency)
->with('user', $user);
}