2012-02-09 72 views
1

我正在使用CakeDC标签插件,我想在我的书籍模型中找到标签。排除HABTM中的某些字段find()

在我的书籍控制器中,我有一个返回分页结果的index()方法。目前,我的index()方法看起来像这样。

function index() { 
    $this-Book>recursive = 0; 
    $this->paginate = array(
     'fields' => array('Book.id','Book.name'), 
     'conditions' => array('Book.status' => 1), 
     'order' => array('Book.id' => 'DESC'), 
     'limit' => 10 
    ); 
    $books = $this->paginate($this->Book); 
    $this->set('books', $books); 
} 

当我做了调试,这些都是我的结果: -

Array 
(
    [0] => Array 
     (
      [Book] => Array 
       (
        [id] => 12 
        [name] => A randomly random book 
        [tags] => 
       ) 

     ) 
) 

如果我提出的递归1而不是0,标签阵列将被填充和调试输出情况如下: -

Array 
(
    [0] => Array 
     (
      [Book] => Array 
       (
        [id] => 12 
        [name] => A randomly random book 
        [tags] => wicked 
       ) 
      [Tag] => Array 
       (
        [0] => Array 
         (
          [id] => 4f30d76a-20dc-44ce-943c-048c98b7a787 
          [identifier] => 
          [name] => wicked 
          [keyname] => wicked 
          [weight] => 0 
          [created] => 2012-02-07 18:48:58 
          [modified] => 2012-02-07 18:48:58 
          [Tagged] => Array 
           (
            [id] => 4f30d76a-f55c-4ab7-b076-048c98b7a787 
            [foreign_key] => 53 
            [tag_id] => 4f30d76a-20dc-44ce-943c-048c98b7a787 
            [model] => Book 
            [language] => en-us 
            [created] => 2012-02-07 18:48:58 
            [modified] => 2012-02-07 18:48:58 
           ) 

         ) 
       ) 

     ) 
) 

提高递归性很好地完成了这项工作。但是,CakePHP返回了包括创建和修改日期字段在内的所有内容。有没有办法让CakePHP只填充$ book ['Book'] ['tags']数组,而不是[Tag]和[Tagged]数组?由于

回答

2

我不知道这个特殊的插件,但通常的方式来获得更细粒度的是从数据库中检索到的数据的控制与Containable行为:http://book.cakephp.org/1.3/en/view/1323/Containable

一旦你把它添加到您的Book模型这是你会写什么,只检索Tag S上的名称和ID:

$this-Book>recursive = -1; 
$this->paginate = array(
    'fields' => array('Book.id','Book.name'), 
    'contain' => array(
     'Tag'=>array('id','name'), 
    ), 
    'conditions' => array('Book.status' => 1), 
    'order' => array('Book.id' => 'DESC'), 
    'limit' => 10 
); 
+0

嗨乔尼,冰山感谢。我早就有一种直觉,那就是Containable肯定会是一个合适的开始。非常感谢你。 – 2012-02-10 15:57:19