プラグイン > 開発について > リポジトリメソッドのエンティティ名に指定するのは? |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2017/6/16 12:42
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
リポジトリメソッドのエンティティ名に指定するのは? EC-CUBE 3.0.14
SQLのリポジトリメソッドで、findBy() で指定idのエンティティが取得できますが、これの否定版として、指定id以外のエンティティを取得する findByNot() を作成しようとしています。 以下のサイトを参考にしてメソッドを追加したのですが、うまく動作しません。 https://stackoverflow.com/questions/14085946/doctrine-findby-does-not-equal app/Plugin/Test/Repository/TestRepository.php
おそらく 'entity' にあたる部分を変更しないといけないのだと思うのですが、ここの仕組みがよくわかっていません。 Product なら 'p' 、Order なら 'o' でいいのでしょうが、プラグイン独自で指定した 'plg_test' というテーブル名の場合は何を指定すればいいのでしょうか? 試しに 'plg_test' を指定してみましたが、結果は empty になりました。
|
h_tanaka |
投稿日時: 2017/6/16 14:56
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: リポジトリメソッドのエンティティ名に指定するのは? 上記のやり方での解決方法がわからなかったため、findAll() で全件検索して1件ずつ判定するやり方に変更しました。
件数が多いテーブルの場合は好ましくないやり方ですが。。 なので、本件はクローズせずにしておきます。 引き続き解決方法のご回答お待ちしています。
|
hata |
投稿日時: 2017/6/16 15:43
対応状況: −−−
|
長老 登録日: 2015/8/3 居住地: 宮城県(2017/09末引退) 投稿: 156 |
Re: リポジトリメソッドのエンティティ名に指定するのは? 別の手ですが...
findByのあたりのソースをみたところcriteriaに色々指定できるようでそれを使ってできないかな? と思ったら、matching()を使う方式のこのスレッドを見つけました。 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=18109&forum=14&post_id=78348 対象が複数あるとダメっぽく結局はcreateQueryBuilderで対応したようですが...欲しい情報はこれにないですかね? こちらのソースをみるとnotInとかあるので複数対象でもmatchingでできそうな... vendor/doctrine/orm/lib/Doctrine/ORM/Query/Expr.php まあ参考まで |
h_tanaka |
投稿日時: 2017/6/16 16:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: リポジトリメソッドのエンティティ名に指定するのは? hata さん
ありがとうございます。 ご提示のスレッドにメソッドの記載があったのでそのまま使えそうです。 ただ、対象のメソッドを含むリポジトリの記述方法がわからないです。 どこまで合っているのわかりませんが、試した実装を以下に記載します。 まず、配送方法テーブルに対して NOT IN 検索したかったので、リポジトリを拡張しようとしました。 findNotContainsBy() メソッド内はご提示のスレッドにおけるnanasessさんのご回答からの引用です。 app/Plugin/Test/Repository/ExtendedDeliveryRepository.php
次に、FormEvents::POST_SET_DATA にてメソッドを使用したかったので、拡張フォームの addEventListener() で呼び出そうとしました。 しかし、ここでつまりました。。 app/Plugin/Test/Form/Extension/ShoppingTypeExtension.php
|
hata |
投稿日時: 2017/6/16 18:10
対応状況: −−−
|
長老 登録日: 2015/8/3 居住地: 宮城県(2017/09末引退) 投稿: 156 |
Re: リポジトリメソッドのエンティティ名に指定するのは? ちょっとよくわからなくなってきたので口を挟むのはここまでにしますが、配送業者からいくつか特定のIDを除いて
エンティティを取り出すだけならこれでいいと思います。
|
h_tanaka |
投稿日時: 2017/6/19 10:59
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1610 |
Re: リポジトリメソッドのエンティティ名に指定するのは? ご提示の実装そのまま使えました。
ありがとうございます! Criteria も勉強して使えるようにならないとですね...!
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |