バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地:
投稿: 2085
Re: 商品一覧にて、サブクエリを条件に付け加えたい

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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
居住地:
投稿: 2085
Re: 商品一覧にて、サブクエリを条件に付け加えたい
chappyさん

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

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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

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


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

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


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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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公式 Amazon Payプラグイン

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.