Я считаю, что когда вы говорите роль пользователя, вы имеете в виду роль аутентифицированного пользователя.
Самый простой подход - определить отношения HasOne в модели продукта:
class Product
{
public function price()
{
return $this->hasOne(Price::class)->where('role_id', auth()->user()->role_id)
}
}
Итак, в представлении вы можете просто сказать:
// Lets use optional() because there may not be any price for that product and user.
optional($product->price)->price
Если задействовано много продуктов, то использование подзапросов будет иметь больше смысла.
class ProductsController extends Controller
{
public function index()
{
$products = Product::addSelect(['right_price' => Price::select('price')
->whereColumn('product_id', 'products.id')
->where('role_id', auth()->user()->role_id)
->limit(1)
])->get()
return view('products.index', compact('products'));
}
}
А затем в представлении:
@foreach($products as $product)
<p>{{$product->right_price}}</p>
@endforeach
Для получения дополнительной информации, пожалуйста, ознакомьтесь с этой статьей .