Else bloğunda bulunan $results = Product::with('taxItem','uom') model ilişkilerini doğru şekilde alabiliyorum.
taxItem ve uom ilişkilerini benzer şekilde if bloğunda da almam gerekiyor. Ancak Sonuca bir türlü ulaşamadım çözüm için yardımlarınızı bekliyorum.
public function search(Request $request)
{
$request->validate([
'vendor_id' => 'sometimes|required|integer|exists:vendors,id'
]);
if(request()->has('vendor_id')) {
$results = DB::table('products')
->select(
'products.id', 'products.unit_price',
DB::raw('concat(products.item_code, " - ", products.description) as text'),
'product_items.price as vendor_price', 'product_items.vendor_id',
'product_items.reference'
)
->join('product_items', 'products.id', '=', 'product_items.product_id')
->join('vendors', 'vendors.id', '=', 'product_items.vendor_id')
->where('product_items.vendor_id', '=', request('vendor_id'))
->where(function($query) {
$query->where('products.item_code', 'like', '%'.request('q').'%')
->orWhere('products.description', 'like', '%'.request('q').'%')
->orWhere('product_items.reference', 'like', '%'.request('q').'%');
})
->limit(6)
->get();
}
else {
$results = Product::with('taxItem','uom')
->orderBy('item_code')
->when(request('q'), function($query) {
$query->where('item_code', 'like', '%'.request('q').'%')
->orWhere('description', 'like', '%'.request('q').'%');
})
->limit(6)
->get(['id', 'item_code', 'description', 'unit_price','uom_id']);
}
return api([
'results' => $results
]);
}