バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

プラグイン > 開発について > 商品一覧にて、サブクエリを条件に付け加えたい

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
chappy
投稿日時: 2017/4/28 18:58
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 77
商品一覧にて、サブクエリを条件に付け加えたい
商品一覧にて、タグテーブルをgroup byしたものを条件につけ加えたいと考えています。
特定のタグ(=1000)のカウント数が0以上だったら、その商品は、表示しないという処理を設けたいのです。

そこで、
front.product.index.search:
のタイミングで以下のコードを動かすようにしました。
引用:

public function onFrontProductIndexSearch(EventArgs $event)
{

$qb = $event->getArgument('qb');

$qb->innerJoin('select count(*) as cnt p.ProductTag where tag = 1000 group by prodtag.id', 'prodtag')
->innerJoin('prodtag.Tag', 'tag')
->andWhere('prodtag.cnt = 0')

}

引用:
テーブル条件
SELECT product_id,count(*) as count FROM `dtb_product_tag` where tag = 1000 group by product_id


このままでは、
[Semantical Error] line 0, col 119 near 'select count': Error: Class 'select' is not defined.
とエラーが出て処理できません。

このinnerJoin部分の記述の仕方が分からず、困っております。
何かご存知の方、お願いいたします。


----------------

chappy
投稿日時: 2017/4/28 22:04
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 77
Re: 商品一覧にて、サブクエリを条件に付け加えたい
補足ですが、、、
別の投稿「商品一覧に独自の条件をつけたい」でも
目的は一緒で、アプローチが異なるものを挙げています。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=18933&forum=13&post_id=81647#forumpost81647

ヒントだけでもお願いします。


----------------

umebius
投稿日時: 2017/5/1 15:52
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 671
Re: 商品一覧にて、サブクエリを条件に付け加えたい

サブクエリ直接使う必要ってありますか?
->Having()とかでCOUNT値によって絞り込めばできそうな気がします。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


chappy
投稿日時: 2017/5/1 17:13
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 77
Re: 商品一覧にて、サブクエリを条件に付け加えたい
umebiusさん ありがとうございます。

Havingを使用した事がなかったので、早速調べて挑戦してみました。
引用:

$qb->innerJoin('p.ProductTag', 'prodtag')
->innerJoin('prodtag.Tag', 'tag')
->andWhere('prodtag.Tag < 1000')
->Having('count(prodtag.id) > 0')
->groupBy('prodtag.id')
;


すると、以下のようなエラーが出ました。
引用:

RuntimeException in CountWalker.php line 50:
Cannot count query that uses a HAVING clause. Use the output walkers for pagination


因みに、sqlは、以下のように排出されています。
引用:

SELECT p, MIN(pc.price02) as HIDDEN price02_min FROM Eccube\Entity\Product p INNER JOIN p.ProductClasses pc INNER JOIN p.ProductTag prodtag INNER JOIN prodtag.Tag tag WHERE p.Status = 1 AND prodtag.Tag < 1000 GROUP BY prodtag.id HAVING count(prodtag.id) > 0 ORDER BY price02_min ASC


これは、HAVING は使えないという意味のような気がしますが・・。
どう思われますでしょうか?


----------------

umebius
投稿日時: 2017/5/1 17:27
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 671
Re: 商品一覧にて、サブクエリを条件に付け加えたい
chappyさん

プラグイン開発されているのだと思いますが、
確認されているEC-CUBE3のバージョンお聞きしてもよろしいですか?
umebius
投稿日時: 2017/5/1 17:31
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 671
Re: 商品一覧にて、サブクエリを条件に付け加えたい
サブクエリの書き方はこのあたりが
参考になるかと思います。

http://stackoverflow.com/questions/10762586/how-to-convert-this-to-doctrine-2-querybuilder-format/10763358#10763358


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


chappy
投稿日時: 2017/5/1 17:56
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 77
Re: 商品一覧にて、サブクエリを条件に付け加えたい
バージョンは、3.0.10です。

参考サイト見てみます。ありがとうございます。


----------------

umebius
投稿日時: 2017/5/2 11:31
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 671
Re: 商品一覧にて、サブクエリを条件に付け加えたい
商品一覧でのHavingですが、この修正で3.0.13あたりから使えるようになっているかもしれないです。
https://github.com/EC-CUBE/ec-cube/pull/1922


本体ファイルさわってよいなら修正簡単なんですが、プラグインからそのコードを3.0.10で動かすようにする方法は、、ものすごく大掛かりなものしか思いつかないです。申し訳ございません。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


chappy
投稿日時: 2017/5/2 18:21
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 77
Re: 商品一覧にて、サブクエリを条件に付け加えたい
いえいえ、有益な情報ありがとうございます!!

バージョンアップも視野に入れながら対応してみます。


----------------

chappy
投稿日時: 2017/5/18 19:49
対応状況: 解決済
一人前
登録日: 2011/7/19
居住地:
投稿: 77
Re: 商品一覧にて、サブクエリを条件に付け加えたい
遅ればせながら、バージョンアップをしたところ、
Havingが使えるようになりました。

ありがとうございました。


----------------

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

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は19,623名です
総投稿数は82,108件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1632
4
yuh
1366
5
red
1059
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
782
10
umebius
671
11
tao_s
646
12 sumida 638
13
homan
633
14
468
615
15 karin 609
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.