2011-01-05 2 views
0

Я использую CakePHP 1.3.Есть ли способ определить отношения модели с условиями в CakePHP?

У меня есть несколько вопросов, касающихся CakePHP Модели:

1) Есть ли способ определить модель с условиями, например, что при вызове с помощью Containable, поведения, мне не нужно, чтобы определить «условия» для снова. Например: у меня есть две модели - «Магазин» и «Сделка», где «Хранить», у которого есть «Сделка». Я хочу, чтобы выполнить следующие действия без необходимости определять эти условия для «Раздать» каждый раз, когда:

$this->Store('all', array('contain'=>array('Deal'=>array('isactive'=>1,'now() < expirydate', 'qty > 0'))); 

2) Кроме того, есть способ определить отношения между моделями по-разному на основе условий? Другими словами, как я могу определить «Store» hasMany «Сделки», «ActiveDeal», «ExpiredDeal» и т. Д., Все в таблице «сделок», но различаются в зависимости от условий, которые я задал для каждого.

Очень ценю любую помощь.

Спасибо/С наилучшими пожеланиями ..

ответ

3

Если вы посмотрите на первую пару примеров кода на Associations: Linking Models Together странице CakePHP Cookbook, вы увидите, что вы можете добавить условия для вашей модели объединений, которые будут работать, когда вы сделайте базовую находку.

Поэтому вы должны быть в состоянии сделать что-то вроде следующего:

class Store extends AppModel { 
    var $name = 'Store'; 

    var $hasMany = array(
     'Deal' => array(
      'className' => 'Deal', 
      'foreignKey' => 'store_id', 
      'conditions' => array(
       'Deal.isactive' => '1', 
       'now() < Deal.expirydate', 
       'Deal.qty > 0' 
      ), 
      'order' => '' 
     ), 
     'ExpiredDeal' => array(
      'className' => 'Deal', 
      'foreignKey' => 'store_id', 
      'conditions' => array('now() >= ExpiredDeal.expirydate'), 
      'order' => '' 
     ) 
    ); 
} 
+1

Кроме того, имейте в виду, что при настройке свойств класса вы не можете ничего оцененную с помощью PHP использовать (IE, используя переменную $ в вашем массиве условий). Однако вы можете использовать конструктор для настройки ваших отношений, если есть действительно что-то динамическое или переменное об ассоциации. –

Смежные вопросы