GitHubで’cakephp search’で検索 Starの多い順に並べてCakePHP3でつかそうなものからピックアップしました。で以下を採用。

friendsofcake/search
https://github.com/FriendsOfCake/search

ドキュメントのルートに行ってcomposerでインストール

$ composer require friendsofcake/search

cakeコマンドでプラグイン追加

$ ./bin/cake plugin load Search

いちおう、config/bootstrap.phpの最後あたりを確認して準備OK

Plugin::load('Search');

モデル(Table)

initializeに addBehavior()と、検索条件を追加

    public function initialize(array $config)
    {
        parent::initialize($config);
        $this->addBehavior('Search.Search');
        $this->searchManager()
            ->like('name',[
                'before' => true,
                'after' => true
            ]);

コントローラー

initializeで読み込みと使うアクション指定(ココではindex)

    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('Search.Prg', [
            'actions' => ['index']
        ]);
    }

モデルのfind()で ’search’ としてリクエストを渡してあげる。
containとかは普通につなげてOK

    public function index()
    {
        
        $query = $this->Products
            ->find('search',['search'=>$this->request->query])
            ->contain(['Suppliers', 'ProductStatuses', 'Components']);
        $this->set('products', $this->paginate($query));
    }

ビュー(検索フォーム)

<?php
echo $this->Form->create(null, ['valueSources' => 'query']);
echo $this->Form->input('name');
echo $this->Form->button('検索', ['type' => 'submit']);
echo $this->Form->end();
?>

検索の様子

検索の様子

詳しくは

friendsofcake/search
https://github.com/FriendsOfCake/search