バージョン選択

フォーラム

メニュー

オンライン状況

51 人のユーザが現在オンラインです。 (37 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 51
もっと...

サイト内検索

質問 > その他 > SQLについて

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2016/6/17 9:36
対応状況: −−−
SQLについて
管理画面の商品登録画面において、カスタマイズを行っておりまして以下のようにしたいと考えています。

カテゴリとして以下のように設定されている
食器販売
┣店舗A
┗店舗C

インテリア販売
┣店舗B
┗店舗C

この場合、ログイン者が店舗Aの場合選択可能とするカテゴリを画面表示として

食器販売
┗店舗A

以下のようにSQL自体は組んで、食器販売と店舗Aが取得されることはphpMyAdminで確認できているのですが実際に組んだ際にうまくいかず…

SELECT *
FROM dtb_category ca
WHERE ca.category_id = '1'
  OR ca.parent_category_id = '1'
  AND ca.category_name = '店舗A'

phpMyAdmin上では
食器販売と店舗Aが取得できていますがこれをquery_builderで以下のように作成したところ
店舗Aしか取得されず、親カテゴリが何なのかわからない状態です。

'query_builder' => function(EntityRepository $er) use($name) {
return $er->createQueryBuilder('ca')
->where('ca.id = :Id')
->setParameter('Id', 1)
->orWhere('ca.Parent = :pId')
->setParameter('pId', 1)
->andWhere('ca.name = :name')
->setParameter('name', $name);

※$nameにはログイン者の名前(カテゴリの店舗名と同名が入っておりそれを取得しております)
ご教示いただける方がいましたら、ヒント等をお願いできればと思います。
DELIGHT
投稿日時: 2016/6/17 10:33
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: SQLについて
意図しているSQLとクエリビルダで組んだSQLが違っています。

デバッグモードに実行SQLが載っているのでそちらを参照して下さい。
デバッグモードの利用方法はEC-CUBEのREADMEに記載されています。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

nyorai
投稿日時: 2016/6/17 11:07
対応状況: −−−
仙人
登録日: 2015/8/21
居住地:
投稿: 302
Re: SQLについて
以下で実行されているSQLを確認できるので、参考にしてみてください

1. デバッグモードで実行する
以下を参考にして、デバッグモードで実行してみてください(index_dev.phpでアクセスするだけです)
http://ec-cube.github.io/tips.html

2. デッグツールバーで、実行されているSQLを確認する
画面下部に、Symfonyのデバッグツールバーが表示されているかと思います。
ツールバーをクリックして、「Doctrine」のメニューを表示すると、実行されているSQLが確認できます。

少し気になっているのですが、以下の続きの内容であれば、スレッドを新たに立てるのではなく、同じスレッドでやりとりするほうが追いかけやすいかなと思います。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=17646&forum=2&post_id=76575#forumpost76575
ゲスト
投稿日時: 2016/6/17 11:08
対応状況: −−−
Re: SQLについて
ありがとうございます。

あー、確かに意図しているものと違っていました。


SELECT 
  d0_.category_id AS category_id0, 
  d0_.category_name AS category_name1, 
  d0_.level AS level2, 
  d0_.rank AS rank3, 
  d0_.create_date AS create_date4, 
  d0_.update_date AS update_date5, 
  d0_.del_flg AS del_flg6, 
  d0_.parent_category_id AS parent_category_id7, 
  d0_.creator_id AS creator_id8 
FROM 
  dtb_category d0_ 
WHERE 
  (
    (
      d0_.category_id = ?  
      OR d0_.parent_category_id = ?
    )
    AND d0_.category_name = ?
  ) 
  AND (d0_.del_flg = 0) 
ORDER BY 
  d0_.rank DESC



条件が3つ以上になってしまうと?単純ではないという感じでしょうか?
DELIGHT
投稿日時: 2016/6/17 11:13
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: SQLについて
下記ドキュメントにOR句の指定も含めて全て記載されていますのでご参照下さい。
http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/query-builder.html


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/17 11:48
対応状況: 解決済
Re: SQLについて
ありがとうございました。

解決いたしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,724名です
総投稿数は109,953件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.