下記のようなテーブルがあり、省略していますがそれぞれに値が入っていて、LEFT JOINで結合したいのですが、結果が表示されません。何が間違っているでしょうか
?(クラス名)
テーブル名 dtb_product(Product)
+---------------+----------------+--------------+------------+
product_id creator_id name ・・・
(id) (Creator)
+---------------+----------------+--------------+------------+
テーブル名 dtb_order_detail(OrderDetail)
+------------------+----------------+----------------+------------+
order_detail_id order_id product_id ・・・
(id) (Order) (Product)
+------------------+----------------+----------------+------------+
テーブル名 dtb_order(Order)
+------------------+-------------------+----------------+------------+
order_id customer_id status ・・・
(id) (Customer) (OrderStatus)
+------------------+-------------------+----------------+------------+
これらのテーブルを合わせてdtb_productにdtb_orderのstatusを入れたものをとりだしたいです。イメージいえばこんな感じにしたいです。
+---------------+----------------+--------------+------------+
product_id creator_id name status
+---------------+----------------+--------------+------------+
以下のコードでdtb_productだけは抽出できました。
$em = $app['orm.em'];
$query = $em->createQuery('SELECT p FROM ECCUBE\Entity\Product p WHERE p.Creator = 3');
$sellProduct = $query->getResult();
return $app['view']->render('Block/selllist.twig', array(
'sellProduct' => $sellProduct,
));
また、$em = $app['orm.em'];//パターン3
$query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p, Eccube\Entity\OrderDetail od, Eccube\Entity\Order o WHERE od.Order = o.id AND p.id = od.Product AND p.Creator = '.$seller.'');
$sellProduct = $query->getResult();
では3つの連結バージョンが取得できましたが、すべてのレコードが表示されてしまいます。
そこで
$em = $app['orm.em'];//パターン3ver2
$query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p LEFT JOIN Eccube\Entity\OrderDetail od ON p.id = od.Product LEFT JOIN Eccube\Entity\Order o ON od.Order = o.id WHERE p.Creator = '.$seller.'');
$sellProduct = $query->getResult();
これでいけるのでは?と思ったのですが、表示できませんでした。
どこが間違っているでしょうか?
わかりづらいかもしれないですが、よろしくお願いいたします。
もし意味不明な箇所があれば補足するので教えてください。
また、symfonyの公式ページやdoctrineのページなども見た上で分からず、質問致しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。