2013-02-12 69 views
0

查询我有这个疑问:搜索在CakePHP 1.2

$conditions = array(
      'editore LIKE' => "%$e%", 
      'titolo LIKE' => "%$t%" 
     ); 
     if (isset($autore_diviso)) 
      $conditions[] = array('autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"));     
     else 
      $conditions[]=array('autori LIKE' => "%$a%"); 
     if (!$anno&&!$anno2) // I HAVE TO CHANGE THIS - if the user does not insert any year 
      $conditions=$conditions; 
     else { 
     if (!$anno) 
      $conditions[] = array('anno <=' => "$anno2");   
     if (!$anno2) 
      $conditions[] = array('anno >=' => "$anno"); 
     } 
     if ($anno&&$anno2) 
      $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2)); 

凡阿鲁平均年,EDITORE意味着出版商和TITOLO意味着称号。

这不是正确的2个作者的搜索工作。
如果我调试$条件,我有,例如:

Array (
[editore LIKE] => %% 
[titolo LIKE] => %% 
[0] => Array 
    (
     [autori LIKE ? AND ?] => Array 
      (
       [0] => %massi% 
       [1] => %palu% 
      ) 

    )) 


但结果是空的。

回答

0

这不是你在PHP中向数组添加元素的方式。此外,没有必要使用明确的AND,这是默认设置。只有在有多个相同的数组键时才需要它。

$conditions = array(
    'autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"), 'editore LIKE' => "%$e%", 
    'titolo LIKE' => "%$t%" 
); 

if (!$anno) 
    $conditions[] = array('anno <=' => "$anno2");   

if (!$anno2) 
    $conditions[] = array('anno >=' => "$anno"); 

if ($anno&&$anno2) 
    $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2)); 
+0

我越来越接近,但它不工作的搜索2名作者,我编辑的问题。 – Ettore 2013-02-12 08:33:17

0

解决了这个代码:

$conditions = array(
     'editore LIKE' => "%$e%", 
     'titolo LIKE' => "%$t%" 
    ); 
    if (isset($autore_diviso)) 
     $conditions[] = array('autori LIKE ? AND autori LIKE?' => array("%$autore1%","%$autore2%"));      
    else 
     $conditions[]=array('autori LIKE' => "%$a%"); 
    if (!$anno&&!$anno2) // Da sistemare. 
     $conditions=$conditions; 
    else { 
    if (!$anno) 
     $conditions[] = array('anno <=' => "$anno2");   
    if (!$anno2) 
     $conditions[] = array('anno >=' => "$anno"); 
    } 
    if ($anno&&$anno2) 
     $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2)); 
    debug($conditions);