バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

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

サイト内検索

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

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
chappy
投稿日時: 2017/4/28 18:58
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 87
商品一覧にて、サブクエリを条件に付け加えたい
商品一覧にて、タグテーブルを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
居住地:
投稿: 87
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
投稿: 726
Re: 商品一覧にて、サブクエリを条件に付け加えたい

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


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


chappy
投稿日時: 2017/5/1 17:13
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 87
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
投稿: 726
Re: 商品一覧にて、サブクエリを条件に付け加えたい
chappyさん

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

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


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

umebius
投稿日時: 2017/5/2 11:31
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 726
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
居住地:
投稿: 87
Re: 商品一覧にて、サブクエリを条件に付け加えたい
いえいえ、有益な情報ありがとうございます!!

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


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

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

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


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

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


 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は20,616名です
総投稿数は83,613件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1663
4
yuh
1433
5
red
1077
6
fukap
907
7
shutta
827
8
468
805
9 ramrun 789
10
tsuji
784
11
umebius
726
12
tao_s
651
13 karin 641
14 sumida 638
15
homan
633
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.