저는 Laravel을 처음 사용하면서 복잡한 웅변 쿼리를 만들려고 노력하고 있습니다. 그러나 나는 그것을 할 수있는 방법을 찾지 못했습니다! 이것은 멀티 벤더 상점 구조를 사용하고 있습니다. Laravel 쿼리 구조
나는 다음과 같은 모델이 있습니다사용자가 많은 제품을 가지고
제품
주문 사용자
사용자는 자신을 가질 수에 속한 주문하기 위해 많은 OrderItem에
OrderItems에 속해있다 제품 및 사용자는 자신의 주문을 가질 수도 있습니다. 각 주.에는 여러 주. 항목이 있으며, 각 주. 항목에는 연관된 하나의 제품이 있습니다. 이것은 내가 원한다면 내가 할 수있는 방법을 내가 필요로하는 정보 나 모두를 제공하지만
Order::with('OrderItems', 'OrderItems.Product', 'OrderItems.Product.User')
->whereUser_id($this->user_id)->first();
:
나는 다음을 수행 할 수있는 단일 주문 객체를 다시 전달하여 그것을 얻을 할
역순으로 똑같은 정보, 예를 들어, 뭔가 같은 ... 이User::with('Products', 'Products.OrderItem', 'Products.OrderItem.Order')
->where('Order.order_id', '=', 1)->get();
누군가가이 작업을 수행하는 올바른 방법의 방향으로 날 포인트? DB::Raw
으로 시도했지만 분명히 객체가 아닌 플랫 응답을 반환합니다. 이것이 현재이 목표를 달성하는 가장 좋은 방법입니까?
User::with(['Products.OrderItem.Order' => function($q){
$q->where('Order.order_id', 1);
}])
->whereHas('Products.OrderItem.Order', function($q){
$q->where('Order.order_id', 1);
})
->get();
with()
열망로드는 ID 1과 whereHas
와 주문이 모두 걸러 것이다 : 만약 당신이 원하는 그러나 당신이 (폐쇄 포함) with()
의 조합 whereHas()
을 사용할 수 있는지
두 번째 쿼리가 작동하지 않습니까? 그런데'Order :: with ('OrderItems.Product.User')'로 충분하다. – lukasgeiter
달성하고자하는 것을 알려주십시오. 이제 첫 번째 쿼리에 대해 구체적이지 않고 두 번째 쿼리에 대해 언급하지 않습니다. 'join '이 없기 때문에 후자는 작동하지 않을 것이므로'users'를 질의 할 때'orders' 테이블을 참조 할 수 없습니다. –
lukasgeiter - 두 번째 쿼리가 작동하지 않습니다. 단지 내가 얻으려고하는 것의 표시입니다. – Chloe