array(“ANDまたはOR” => array{
“項目1” => “値”, “項目2” => “値”
));こんな具合になります。キーに”AND”または”OR”を指定し、その値に連想配列を使って、項目名をキーとする値を複数用意します。これで、配列に用意した複数の検索条件をANDまたはORして検索を行うようになります。$opt = array("OR" => array (
"MySampleData.name" => $name,
"MySampleData.mail" => $mail
)
);このように設定してありますね。これで、nameとmailのそれぞれの条件を設定したOR検索が実行できます。findの際には、find('all',array('conditions' => $opt));このように、’conditions’の値として、先ほどの$optを設定してやるのです。これで複数の条件を設定した検索ができるようになります。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※find.ctp
<h1>Index Page</h1>
<p>MySampleData Find View.</p>
<?php
echo $this->Form->create('MySampleData');
echo $this->Form->input('name');
echo $this->Form->input('mail');
echo $this->Form->end('Submit');
?>
<?php if (isset($data)): ?>
<pre><?php print_r($data); ?></pre>
<?php endif; ?>
※findメソッド
public function find(){
// レイアウト関係
$this->layout = "Sample";
$this->set("header_for_layout", "Sample Application");
$this->set("footer_for_layout",
"copyright by SYODA-Tuyano. 2011.");
// post時の処理
if ($this->request->is('post')) {
$name = $this->request->data('MySampleData.name');
$mail = $this->request->data('MySampleData.mail');
$opt = array("OR" => array (
"MySampleData.name" => $name,
"MySampleData.mail" => $mail
)
);
$data = $this->MySampleData->
find('all',array('conditions' => $opt));
$this->set('data',$data);
}
}
| << 前へ | 次へ >> |