Как выбрать, какие связанные модели возвращать в запросе с CakePHP - PullRequest
0 голосов
/ 24 ноября 2011

В моей модели есть следующий код:

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 голосов
/ 24 ноября 2011

Мы также можем использовать unbindModel для удаления нежелательных связей на лету. Какие данные мы не хотим получать.

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

Для получения дополнительной информации, пожалуйста, проверьте эту ссылку book.cakephp

0 голосов
/ 24 ноября 2011

Отношения в такой модели, как hasMany и belongsTo, являются просто возможными определениями.Вы можете выбрать, какие из них вы хотите вернуть, когда делаете find() с чем-то, называемым Containable поведение .Ознакомьтесь с документацией для получения подробной информации.

Вы начинаете с добавления поведения к вашей Product модели:

class Product extends AppModel {
    public $actsAs = array('Containable');  // add this line
    ...
}

Затем, когда вы хотите запросить ваши продукты, вы ставите hasMany отношения, которые вы хотите вернуть в методе contain() до find().

$this->Product->contain('Sales');
$products = $this->Product->find('all', ...);

Тогда у вас будут только Продукты и связанные Продажи.

...