

`■`MySQLデータベース内に以下のテーブルを作成。

[code]

    create table users(
        id int not null auto_increment primary key,
        name varchar(250),
        group_id varchar(20));
    
    create table groups(
        id int not null auto_increment primary key,
        name varchar(250));
    
[/code]

`■`サンプルとして、30レコードほど入力済み

`■`Search Pluginを設定済み

`■`app/Model/User.php

[code]

    <?php
    class User extends AppModel {
    
    public $actsAs = array('Search.Searchable');
    
    public $belongsTo = array(              
        'Group' => array(
            'className' => 'Group',
            'foreignKey' => 'group_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
    
    public $filterArgs = array(
        'name' => array('type' => 'like', 'field' =>
            array('User.name','User.group_id')));
        }
    
[/code]

`■`app/Model/Group.php

[code]

    <?php
    App::uses('AppModel', 'Model');
    
    class Group extends AppModel {
    
    public $hasMany = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'group_id',
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
          )
       );
    }
    
[/code]

`■`app/Controller/UsersController.php

[code]

    <?php
      class UsersController extends AppController {
    
        public $components = array('Search.Prg');
        public $paginate = array();
    
        public function index() {
                $this->Prg->commonProcess();
                $this->paginate = array(
                        'limit' => 5
                );
    
                $this->paginate['conditions'] = $this->User->parseCriteria($this->passedArgs);
    
                $userList = $this->paginate();
                $this->set(compact('userList'));
    
                $groups = $this->User->Group->find('list');
                $this->set(compact( 'groups'));
          }
    }
    
[/code]

`■`app/View/Users/index.ctp

[code]

    <div class="section form_search">
    
    <?php echo $this->Form->create('User',array(
        'novalidate' => true,
        'url' => array_merge(array('action' => 'index'),
         $this->params['pass'])));
    ?>
    <?php echo $this->Form->input('name',array('placeholder' => '名前を入力してください','lable' => false)); ?>
    <?php echo $this->Form->input('group_id', array(
        'type' => 'select',
        'multiple' => 'checkbox',
        'options' => $groups,
        ));
    ?>
    <?php echo $this->Form->submit('検索'); ?>
    <?php echo $this->Form->end(); ?>
    
    <div class="section">
    <h2>名前 or グループ名一覧</h2>
    <table>
      <tr>
        <th><?php echo $this->Paginator->sort('id','ID'); ?></th>
        <th><?php echo $this->Paginator->sort('name','名前'); ?></th>
        <th><?php echo $this->Paginator->sort('group_id','グループ'); ?></th>
      </tr>
    <?php foreach($userList as $user): ?>
      <tr>
        <td><?php echo h($user['User']['id']); ?></td>
        <td><?php echo h($user['User']['name']); ?></td>
        <td><?php echo h($user['Group']['name']); ?></td>
      </tr>
    <?php endforeach; ?>
    </table>
    </div>
    
    <div class="paginateLinks">
      <?php echo $this->Paginator->prev(); ?>
      <?php echo $this->Paginator->numbers(); ?>
      <?php echo $this->Paginator->next(); ?>
    </div>
    
[/code]

以上で、全てです。

ユーザーの名前を入力しての検索は、できるのですが、チェックボックス  
にチェックを入れて検索ができません。

どうすれば、チェックボックスでの検索ができるのでしょうか？

それと、名前とチェックボックスのAND検索。  
名前とチェックボックスのOR検索もどうすれば良いか  
いろいろやってみたのですが、CakePHP初心者には、  
いつまでたっても分かりません。

どうか、よろしくおお願いします。


CC BY-SA 3.0
2015-05-03T07:11:16.740
9790
2015-05-15T12:09:44.687
2015-05-15T12:09:44.687
2668
7303
question
cakephp
CakePHP2.6.4に【CakeDC search-master】プラグインを使って【checkbox】での検索ができない。