2013-02-13 89 views
1

在cakephp 1.2中,我有一个带书籍列表的表格(biblio),和另一个表格(tematiche),我在这里列出标签。
我有这样的代码来获取图书列表:
SQL Query CakePHP 1.2来自2个不同的表格

if (isset($autore_diviso)) 
     { 
      $dim=count($autore_diviso); 
      $i=0; 
      while ($i<$dim) 
      { 
       $conditions[]=array ('autori LIKE ?' => array(
        '%' . $autore_diviso[$i][0] . '%')); 
       $i++; 
      } 
     } 
     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)); } 


现在我也需要得到一本书的标签,我怎样才能把它添加到这个查询?

+0

的结果,尝试在两表有关系吗? – 2013-02-13 08:23:24

+0

在标签表中有书籍编号 – Ettore 2013-02-13 08:28:07

+0

您是否定义了模型中的关系? – 2013-02-13 08:30:04

回答

1

结合Tag model在控制器

在控制器

<?php 

$this->Book->bindModel(array 
(
    'hasMany' => array 
    (
     'Tag' => array 
     (
      'foreignKey' => false, 
      'conditions' => array 
      (
       'Book.id = Tag.book_id' 
      ) 
     ) 
    ) 
)); 

$books = $this->Book->find('all',array 
(
    'conditions' => array 
    (
     'Book.id' => 'SOME_ID' 
    ) 
)); 

pr($books); 
exit;

上述调试

Array 
(
    [Book] => Array 
    (
     [id] => SOMEID 
     [name] => BOOKNAME 
    ) 
    [Tag] => Array 
    (
     [0] => Array 
     (
      [id] => 1 
      [name] => TAGNAME 
      [book_id] => SOME_ID 
     ) 
     [1] => Array 
     (
      [id] => 2 
      [name] => TAGNAME 
      [book_id] => SOME_ID 
     ) 
     [2] => Array 
     (
      [id] => 4 
      [name] => TAGNAME 
      [book_id] => SOME_ID 
     ) 
    ) 
)
+0

谢谢,我会尝试 – Ettore 2013-02-13 09:04:52

+0

好运...... :) – 2013-02-13 09:05:34