|
SQLの記述について すみません。恥ずかしながら、SQLの記述についてお尋ねさせていただきたいと思います。
対象ファイルは src\Eccube\Controller\Adminの AdminController.phpのgetSalesByDayメソッドです。
初期から記載のある 管理画面の今日分(昨日分)の売り上げ状況が表示されている部分の件数を取得しているものと思いますが ここで、各店舗ごと自分たちの分のみにしたいと考えています
店舗ごとを切り分けるのはユーザ情報からユーザ名で取得しカテゴリ名と紐づけて絞り込む予定なのですが 初期のままでは dtb_orderしか使用していないのでカテゴリ名が取得できません。
そのため、結合させていくのですが
dtb_orderからdtb_categoryに紐づけるために 以下の流れと考えています dtb_order⇒dtb_order_detail dtb_order_detail⇒dtb_product dtb_product⇒dtb_product_category dtb_product_category⇒dtb_category
ここのメソッドでは直接SQLが記載されているため その内部に記載すればよいと思い
$dql = 'SELECT SUBSTRING(CONCAT(o.order_date, \'\'), 1, 10) AS order_day, SUM(o.payment_total) AS order_amount, COUNT(o) AS order_count FROM Eccube\Entity\Order o INNER JOIN dtb_order_detail od ※ ON o.order_id = od.order_id ※ WHERE o.del_flg = 0 AND o.OrderStatus NOT IN (:excludes) AND SUBSTRING(CONCAT(o.order_date, \'\'), 1, 10) = SUBSTRING(:targetDate, 1, 10) GROUP BY order_day';
このように※の部分を追加した場合は [Semantical Error] line 0, col 270 near 'dtb_order_detail': Error: Class 'dtb_order_detail' is not defined. このエラーが
Orderと同じように※の部分(上側の結合テーブル部分)を以下のようにした場合 INNER JOIN Eccube\Entity\OrderDetail od は [Syntax Error] line 0, col 304: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON' このエラーが出てしまいました。
対処方法などご存知の方がいましたら、ご教示お願いいただければ幸いです。 よろしくお願いいたします。
|