如何在CakePHP查询中选择要返回的关联模型

时间:2011-11-24 05:02:46

标签: cakephp has-many

我的模型中有以下代码:

var $name = 'Product';            
    var $hasMany = array(
        'AttachedProduct' => array(
            'className'     => 'AttachedProduct',
            'foreignKey'    => 'product_id'
        ),
        'Sale' => array(
            'className'     => 'Sale',
            'foreignKey'    => 'item_id',
            'fields'    => 'Sale.peso_value'
        )
    );  

我只想使用Sale部分。目前,当我查询我的产品模型时,也会返回'AttachedProduct'。我只想要返回Sale条记录。

感谢您的帮助! :)

2 个答案:

答案 0 :(得分:0)

hasManybelongsTo等模型中的关系只是可能的定义。在使用名为Containable behaviorfind()进行Product时,您可以选择要返回的内容。查看文档了解详细信息。

首先将行为添加到class Product extends AppModel { public $actsAs = array('Containable'); // add this line ... } 模型中:

hasMany

然后,当您想要查询产品时,可以在contain()之前的find()方法中添加要返回的$this->Product->contain('Sales'); $products = $this->Product->find('all', ...); 关系。

{{1}}

然后您将只拥有产品和相关销售。

答案 1 :(得分:0)

我们还可以使用unbindModel动态删除不需要的关系。我们不希望检索哪些数据。

$this->Product->unbindModel(
   array('hasMany' => array('Sale'))    
);

有关详细信息,请查看此book.cakephp link