時事自考

時事ネタを中心に個人的な考察を上げていきます。

CakePHPで複数のsortができないとか・・・。

CakePHPの仕様って微妙じゃない?

相変わらずCakePHPの炎上プロジェクトに巻き込まれ中なわけですが、お客さんからページ遷移すると並び方がおかしい、みたいなことを言われていたので、確認するも確かに入っている。

そして開発環境で試してみるも、特に問題なさげ・・・うーん、と思って見てみると、本番環境では確かに問題アリアリでした。

なぜかというと、開発環境は最初のキーでほとんどソート確定するほど件数が少なかったからなんですね。

ということで、いつも私のそばに這いよる検索エンジンこと、ぐーぐる先生に「cakephp 複数 sort」でお伺いを立てたところ、たくさん引っかかりましたが・・・。

痒いところに手が届かない

beforeFindフィルタで並べ替え条件を設定すればいいじゃない。と言われてもですね、これ入れたら、全部の検索が影響受けるわけですよね?

変えたいの一部だけなんですけれども、特に一部は条件が逆になるので、どうしたものかなという状況になってしまいました。

というか、これは仕様っていうか、バグの領域な気もしますけれどね・・・どうなんでしょうか?

pagenateもfindのようにorderパラメータを渡せばいける・・・わけもなく。

結局

こちらの記事を参考にして実装することになりました。

setOrder的なメソッドを追加して、そこで追加orderを設定。

beforeFindでorderを追加する的な処理を入れて対応しました。

ただ、こういう部分を実装するとなると、値が渡らなかった場合とか、正しく設定しなかったりした場合とかバリデーションの面も考慮しないといけなかったりするので・・・。

自分で作ったものなら使い方はわかるというのはありますけれども、プロジェクト自体が一人で実装というのは、実際の仕事ではさほど多くないし、誰かに引き継いだあとのことも考えると、こういう部分も実装しておかないと、あとあと面倒ではありますね。

フレームワークとして考えると

色々と微妙に感じる部分が多いかなと。

場面場面での記述方法が大きく異なるため、データ取ってくる時も、同じようにとってこようとすると上手くいかない、というパターンが多いですね。

確かに記述量が減るのはいい点だと思いますが、過剰に減らすのを目指すあまり、同じことをしたいのに、記述方法が大きく変わってしまうのは、どうかなと思います。

特に自分で作ったフレームワークは、例えばデータを取ってくるのであれば、リスト用とページ用で渡すパラメータは同じものを利用できるようにしたりしていますので、なおさら、その辺りが不便に感じるのかもしれません。

もちろん、CakePHPCakePHPで考慮している部分は多いのだとは思いますけれども、やはり、都度マニュアルを見ないといけない部分が多いことを考えると、フレームワークとしては、かなり微妙に感じました。

まあ、おかげで参考書はたくさん売れるのかもしれませんが(笑)