2014-10-24 1 views
0

안녕하세요 저는 laravel 웅변 쿼리로 작업 중이었던 mysql 쿼리를 변환하는 데 문제가있어 도움이 필요합니다. many to many 관계가있는 제품 테이블로 연결되는 예약 테이블이 있습니다. 모든 예약과 그 예약과 관련된 제품의 수와 상관없이 첫 번째 제품을 가져 오려고합니다. 여기 내 SQL이다 : 나는 원시 쿼리로이를 배치 할 수 있습니다laravel : many to many (단 하나의 관련 항목 만) laravel 쿼리에 대한 mysql 쿼리

SELECT reservations.id, 
     reservations.play_date, 
     reservations.group_size, 
     reservations.status, 
     reservations.event_title, 
     t4.product_id, 
     t4.id AS link_id, 
     p1.name, 
     CONCAT_WS(" ", customers.first_name, customers.last_name, customers.group_name) AS customerName, 
     reservations.event_type 
FROM reservations 
LEFT JOIN customers ON reservations.customer_id = customers.id 
LEFT JOIN 
    (SELECT * 
    FROM product_reservation AS t3 
    GROUP BY t3.reservation_id) AS t4 ON t4.reservation_id = reservations.id 
LEFT JOIN products AS p1 ON t4.product_id = p1.id 

하지만 그 결과로 배열을 생산 - 나는 결과 에 다른 모듈로 작업 할 수 있도록 질의 객체를 생성 할 수 있어야합니다 이 작업을 수행하는 웅변적인 방법이 있습니까? 또는이 쿼리를 laravel에서 작동 시키려면 어떻게해야합니까? 감사합니다.

답변

0

예, 묵시적인 관계를 사용할 수 있습니다. 그들은 이런 식으로 보일 것입니다 ...

class Reservation extends Eloquent 
{ 
    public function products() 
    { 
     return $this->belongsToMany('Product'); 
    } 
} 

class Product 
{ 
    public function reservations() 
    { 
     return $this->belongsToMany('Reservation'); 
    } 
} 

$reservations = Reservation::with(array('products', function($q) { 
    $q->take(1); 
}))->get(); 

foreach($reservations as $reservation) { 
    echo $reservation->name; 
    foreach($reservation->products as $product) { 
     echo $product->description; 
    } 
} 
+0

안녕하세요 - 이미 관계가 설정되어 있습니다. 귀하의 답변을 구현하려고했지만'explode() 매개 변수 2 문자열, 주어진 개체''하위 쿼리에서 참조 된 쿼리 개체 관련 가정합니다 오류가 발생하고 있어요? – Ray