質問するログイン新規登録

質問編集履歴

1

inner joinでは取得できたこと

2016/03/25 00:09

投稿

toss
toss

スコア56

title CHANGED
@@ -1,1 +1,1 @@
1
- doctrineのDQLでテーブルを連結させた
1
+ DQLでLEFT JOINできな
body CHANGED
@@ -1,4 +1,5 @@
1
- 下記のようなテーブルがあり、省略していますがそれぞれに値が入っていす。(はクラス名)
1
+ 下記のようなテーブルがあり、省略していますがそれぞれに値が入っていて、LEFT JOINで結合したいのでが、結果が表示されません何が間違っているでしょうか
2
+ ?(クラス名)
2
3
 
3
4
  テーブル名 dtb_product(Product)
4
5
  +---------------+----------------+--------------+------------+
@@ -30,13 +31,13 @@
30
31
 
31
32
 
32
33
 
33
- これらのテーブルを合わせてdtb_productにdtb_orderのstatusを入れたものをとりだしたいです。こんな感じです。
34
+ これらのテーブルを合わせてdtb_productにdtb_orderのstatusを入れたものをとりだしたいです。イメージいえばこんな感じにしたいです。
34
35
  +---------------+----------------+--------------+------------+
35
36
  product_id creator_id name status
36
37
  +---------------+----------------+--------------+------------+
37
38
 
38
39
 
39
- 以下のコードでdtb_product抽出できました。
40
+ 以下のコードでdtb_productだけは抽出できました。
40
41
 
41
42
  $em = $app['orm.em'];
42
43
  $query = $em->createQuery('SELECT p FROM ECCUBE\Entity\Product p WHERE p.Creator = 3');
@@ -47,12 +48,21 @@
47
48
  ));
48
49
 
49
50
 
51
+ また、$em = $app['orm.em'];//パターン3
52
+ $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.'');
53
+ $sellProduct = $query->getResult();
54
+ では3つの連結バージョンが取得できましたが、すべてのレコードが表示されてしまいます。
50
55
 
51
56
 
52
- セレクト文の
53
- SELECT p FROM ECCUBE\Entity\Product p WHERE p.Creator = 3
54
- をどんな記述にすれば、上記を実現できるでしょうか?
57
+ そこで
58
+ $em = $app['orm.em'];//パターン3ver2
59
+ $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.'');
60
+ $sellProduct = $query->getResult();
55
61
 
62
+ これでいけるのでは?と思ったのですが、表示できませんでした。
63
+ どこが間違っているでしょうか?
64
+
65
+
56
66
  わかりづらいかもしれないですが、よろしくお願いいたします。
57
67
  もし意味不明な箇所があれば補足するので教えてください。
58
68