バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

機能要望 > その他 > FindByで、NOT条件を指定したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
chappy
投稿日時: 2016/10/11 14:35
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 87
FindByで、NOT条件を指定したい
FindByでは、NOT条件を指定することはできるのでしょうか?
いろいろ検索してみましたが、分かりませんでした。

Parent は nullを指定
id は「1,3,6」以外
という風に条件を指定したいのですが、
記述が分からず困っています。

何かご存じの方、宜しくお願いします。

----------------
$Categories = $app['eccube.repository.category']
->findBy(
array(
'Parent' => null,
???ここら辺から分からないです。
'AND' => array(
'NOT' => array(
'id' => array(1,3,6)
)
)
),
array('rank' => 'DESC')
);
umebius
投稿日時: 2016/10/12 2:02
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: FindByで、NOT条件を指定したい
QueryBuilderとか他の方法でいけるのでは?

こんなのもいけるんじゃないでしょうか。(未検証)
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where($criteria->expr()->('id', [1,3,6]));
$result = $app['eccube.repository.category']->matching($criteria);


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

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

chappy
投稿日時: 2016/10/12 21:38
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 87
Re: FindByで、NOT条件を指定したい
umebiusさん、いつもありがとうございます。

教えて頂いた記述ですと、
真ん中の行でエラーになりました。

Parse Error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'

-----------------------------------------------
結局どこを直せばいいのか分からなかったのですが、
調べた結果、以下のような形ですと、1以外のものを抽出することができました。

$criteria->where($criteria->expr()->neq('id','1'));

しかし、1,3,6を指定する、他の条件を付けたす等の記述は分かりませんでした。
※[1,3,6]では、動きませんでした。

他の方法も含め、調査中ですが、さらに何かヒントをご存じでしたら、お願いします。
umebius
投稿日時: 2016/10/13 0:43
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: FindByで、NOT条件を指定したい
エラーってshort syntaxのせいでしょうか?

QueryBuilderで書くならこんな感じでしょうか

        $qb = $this->createQueryBuilder('a')
            ->where('a.id IN (:ids)')
            ->setParameter('ids', array(1,3,6));


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

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

chappy
投稿日時: 2016/10/13 20:23
対応状況: −−−
一人前
登録日: 2011/7/19
居住地:
投稿: 87
Re: FindByで、NOT条件を指定したい
QueryBuilderにて、思い通りの動作を確認できました。

ありがとうございました!
umebius
投稿日時: 2016/10/14 1:17
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: FindByで、NOT条件を指定したい
良かったです。
QueryBuilder便利ですよね!


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

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

nanasess
投稿日時: 2016/10/14 19:18
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: FindByで、NOT条件を指定したい
蛇足ですが、、こんなメソッドを書くと、汎用的ですっきりすると思います

https://github.com/EC-CUBE/ec-cube/pull/1845/files#diff-5ee356332b9db75a34cad77837ea5d16R38
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
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.