1.やりたいこと
CakePHP(ver 2.x)を用いたポートフォリオサイト内のあいまい検索機能実装
2.実装の方針
ポートフォリオごとにID,事例名,説明文などがあるので特定の検索keyを入力→データベース内でkeyを一切含まないデータのIDを抽出
→全体表示から含まないものを引く形で並べて表示
(検索する事項の範囲が広い故の,keyが単一事例に複数当てはまり競合することを防止する意図)
search.ctpを作成し,ProjectController.php内部でfind()を使用.
http://w.builwing.info/2012/05/21/cakephp2-1%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A4%9C%E7%B4%A2/
こちらの実装方法を参考にしています.
3.どのようなエラーが出ているか
$key=$this->request->data['Search']['client']; にて,
Column not found: 1054 Unknown column 'key' in 'where clause' でています.
4.やったこと(実際のコード)
上がsearch.ctp,下がProjectController.phpです.
PHP
1<h2>検索するワードを記入してください</h2> 2<?php echo $this->Form->create('Search', array('url' => 'index'));?> 3<?php echo $this->Form->input('key'); ?> 4<p> 5 検索後、一覧ページに遷移します。<br /> 6</p> 7<?php echo $this->Form->end('検索'); ?> 8
PHP
1 //検索機能 2 //リクエストがPOSTの場合 3 if($this->request->is('post')){ 4 //Formの値を取得 5 //$key=$this->data['Search']['client']; 6 $key=$this->request->data['Search']['client']; 7 //POSTされたデータを曖昧検索 8 $data=$this->Project->find('all',array( 9 'conditions'=>array('key like'=>'%'.$key.'%'))); 10 $this->set('projects',$data); 11 }else{ //POST以外の場合 12 //Collectionモデルから全てのデータを検索 13 $data=$this->Project->find('all'); 14 //データの連想配列をセット 15 $this->set('projects',$data); 16 } 17 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/22 03:26
退会済みユーザー
2017/12/22 04:43