CakePHP3の検索プラグインとして、friendsofcake/searchが良く使われていると思いますが、CakePHP3.6で仕様が変わってしまいました。
CakePHPはこういうことがよくあるので困っちゃいますね。
変更点
こんな感じの書き方に変わりました
model
use Search\Manager; class ApplesTable extends Table{ public function initialize(){ //初期化時にまとめてやる場合 parent::initialize(); $this->addBehavior("Search.Search"); $this->searchManager() ->value("fruit_id"); } public function searchManager(){ //個別に書く場合 $searchManager = $this->behaviors()->Search->searchManager(); $searchManager ->value('fruit_id'); return $searchManager; } }
Controller
class HogesController extends Controller{ public function initialize(){ parent::initialize(); $this->loadComponent("Search.Prg",[ "actions" => ["index"] ]); } public function index(){ $filter = $this->request->getQuery(); $query = $this->Emails->find("search", $filter); $apples = $this->paginate($query); $this->set(compact("hoges")); } }
モデルでは、以前はsearchConfiguration()を呼ばなくても裏で勝手に読んでくれていたみたいですが、今回から自分で呼ばないとダメ見たいです。
また、filterParams()なくなったようで、Request::getQuery()メソッドからうけとっだデーターをそのままfindメソッドに渡すだけでよくなったようです。