ryuring

Results 104 comments of ryuring

@katokaisya 話がバラけているので こちらでやり取りしましょう。 https://github.com/baserproject/basercms/issues/3634

@katokaisya クエリパラメーターの変更は、initialize 、または、startup でやるべきでは? という話になりましたが、それで対応できそうですか?

@seto1 > baser5.0系だとBcBlog.BlogPosts.beforeFindでもクエリが取得できてたんですが、5.1系だとarrayになってます。 下記コミットで変更となっているのが原因ようですね。5.0の最新だとすでにこのコミットが入っています。 https://github.com/baserproject/basercms/commit/e5d6db52a5184cc4d4cc0cdf4f44db49c46a2c3c また、こちらのプルリクにもコメントを書きましたが、afterFindで書き換えるというのでもいいかもしれません。 https://github.com/baserproject/basercms/pull/3635#issuecomment-2252249890 ただ、Cake本体側のイベントに渡すパラメーターが元々こちらなので、こちらに合わせた方がいいかもですね。 ``` $repository = $this->getRepository(); $repository->dispatchEvent('Model.beforeFind', [ $this, new ArrayObject($this->_options), !$this->isEagerLoaded(), ]); ```

ん?ということは、元々 beforeFindはあったのか、、、 @uchin0 こちらのコミットの理由は何でしたっけ? https://github.com/baserproject/basercms/commit/e5d6db52a5184cc4d4cc0cdf4f44db49c46a2c3c

afterFindがなかったからか。ということは、beforeFindが2発発動されてしまう可能性が高い?(要調査)

@seto1 調査しましたが、`BcBlog.BlogPosts.beforeFind` で、beforeFindが2回呼び出されています。 - SelectQueryのbeforeFind - AppTableのbeforeFind AppTableのbeforeFindを削除することを検討したいですね、、、

@katokaisya 取り急ぎ参照を入れておきます。 https://github.com/baserproject/basercms/pull/3635#issuecomment-2252844985

現時点で分かっていること ### where の第2引数に true を設定すると上書きとなる ``` $query->where(['BlogPosts.blog_content_id IN' => [1,2]], true); ``` ### 元々のwhere条件を取得する ``` // QueryExpression として取得できる $where = $query->clause('where'); ``` が、実態である`QueryExpression::_conditions ` が参照不可であるため、既存の検索条件を解析できない。 つまり、既存の条件を参照しつつ、一部の条件だけを書き換えて、`where()` で上書きすることができない。 ### afterFindの呼び出し順が想定と違った...

課題は3点 ### 検索パラメーターの一部書き換えをどうやってやるか 加藤さんの提案のとおり、Queryオブジェクト作成前のタイミングで書き換えさせる方が良さそう。 ただ、Controllerのイベントにはしたくないため、サービスでのイベント実装を検討する? `beforeGetIndex` ? ### beforeFindの重複 AppTableのbeforeFindは削除した方が混乱をうまない ### afterFindの呼び出し順 AppTableのbeforeFind を削除した場合、順番が逆となる。イベント名称を違うものに変更した方がよいかも 1. AppTableのafterFind 2. SelectQueryのbeforeFind