$datas = $this->Mydata->findAllByName($this->data["Mydata"]["FIND"]);このようにしてデータを検索すればいい、と思うでしょう。実際にやってみると、「山田太郎」と入力して双信すれば、ちゃんと山田太郎さんのデータが表示します。が、「山田」と入力すると、何も検索されません。このやり方だと、完全に一致する値だけしか検索することができないのです。
モデル->find("all", 連想配列 );第2引数に、検索に関する細かな情報を連想配列として用意します。これにより、柔軟な検索が行えるようになるのです。例えば、先ほどのサンプルで、「findAllById~」の文を、下のリストのように書き換えてみましょう(長いので適時改行してます)。これで検索を行うと、入力した文字を含むデータが全て検索されます。例えば「田」と検索すると、名前に「田」の字を含むものがすべて表示されるのです。――ここでは、第2引数の連想配列の中に、以下のようなものが用意されています。
"conditions"=> array( 項目の指定 => 検索する値の指定 );このconditionsというのは、検索の条件を設定するためのものです。これは、その後に配列として条件を設定します。ここでは、以下のような形で条件が設定されていました。
array("Mydata.name like ?"=>array("%{$this->data["Mydata"]["FIND"]}%"))これは、"Mydata.name like "%検索文字%"というように検索の条件を設定するものです。これにより、nameの値に検索文字が含まれていれば検索されるようになります。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※nameの検索を行うための文 $datas = $this->Mydata->find("all", array("conditions"=>array( "Mydata.name like ?"=>array( "%{$this->data["Mydata"]["FIND"]}%"))));
<< 前へ | 次へ >> |