У меня есть следующие модели и есть отношение
Модель
User
Product
Orders
OrderProduct
ProductReviews
Отношения
User hasMany Orders
Orders hasMany OrderProdut
User hasMany ProductReview
Product hasMany ProductReview
ProductReview belongsTo User
Внутри страницы продукта перечислены все отзывы об этом продукте с информацией о пользователе, который сделал обзор.
Я хочу проверить, совершил ли обзор в списке покупку рассматриваемого товара.
До сих пор я делал это с php-циклами и энергичной загрузкой. Есть ли лучший способ сделать это
$product = Product::with([
'reviews'=>function($q) {
$q->where('status', 1);
},
'reviews.user'
])->first();
if($product){
$product->load(['reviews.user.orders.orderProducts' => function($q) use($product){
$q->where('product_id',$product->id);
}]);
}
foreach ($product->reviews as $review){
$review->purchased_from_microless = false;
foreach ($review->user->orders as $order) {
if($order->orderProducts->count()){
$review->purchased_from_microless = true;
break;
}
}
}