私のコントローラーにはコードのこの部分があります:
if ((!empty($params))&&(isset($params['autore'])||isset($params['titolo'])||isset($params['editore'])||isset($params['anno']))) {
$a = $params['autore'];
if (strpos($a,' ')||strpos($a,',')) {
$autore_diviso = explode(" ", $a);
$this->set('autore_diviso', $autore_diviso);
}
$t = $params['titolo'];
$e = $params['editore'];
$an = $params['anno'];
$an2 = $params['anno2'];
if ($an==''&&$an2=='')
$conditions = array('AND' => array('autori LIKE' => "%$a%",
'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%"));
else
{
if ($an=='')
$conditions = array(array('AND' => array('autori LIKE' => "%$a%",
'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%")),
'AND' => array('anno <=' => "$an2"));
if ($an2=='')
$conditions = array(array('AND' => array('autori LIKE' => "%$a%", 'editore LIKE' => "%$e%",'titolo LIKE' => "%$t%")), 'AND' => array('anno >=' => "$an"));
else
$conditions = array('AND' => array(
'autori LIKE' => "%$a%", 'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"),
'OR' => array('anno BETWEEN ? AND ?' => array($an,$an2)));
}
$u = $this->paginate('CdBiblio',$conditions);
$this->set('query', $u);
}
(ここで、「anno」は「年」を意味します-titolo =「title」およびeditore=「publisher」)。
このコードを単純化するにはどうすればよいですか?
また、ユーザーが2人の著者を検索できるようにする必要があります(したがって、... elseステートメントの場合はさらに追加します)。