2011-01-05 4 views
0

CakePHP 1.3을 사용하고 있습니다. CakePHP의 조건과 모델 관계를 정의하는 방법이 있습니까?

내가 CakePHP의 모델에 대한 몇 가지 질문이 있습니다

1) 조건을 가진 모델을 정의하는 방법이 있나요을 함유 성, 동작을 사용하여 호출 할 때, I가 '조건'을 정의 할 필요가 없습니다 있도록 다시. 예를 들면 : 나는 "Store"와 "Deal"의 두 모델을 가지고 있는데, 그 중 "Store"는 hasMany "Deal"입니다. 나는 "거래"때마다 이러한 조건을 정의 할 필요없이 다음을 수행 할 :

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

2) 또한, 다른 조건에 따라 모델 사이의 관계를 정의하는 방법이 있나요? 즉, 어떻게 "상점"hasMany "거래", "ActiveDeal", "ExpiredDeal"등, 모든 '거래'테이블에 정의 할 수 있지만 각각에 대해 설정 한 조건에 따라 다릅니다.

많은 도움을 주셔서 감사합니다.

감사/감사합니다 .. 당신이 CakePHP의 요리 책의 Associations: Linking Models Together 페이지에 코드 예제의 첫 부분을 보면, 당신은 당신의 모델이 당신 때마다 작동합니다 조인하는 조건을 추가 할 수 있습니다 것을 볼 수 있습니다

답변

3

기본적인 발견을해라. 따라서

다음과 같이 할 수 있어야한다 :, 또한

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

을 (IE 당신의 조건 배열에 $ 변수를 사용하여 클래스 속성을 설정할 때 PHP에 의해 평가 아무것도 사용할 수 없다는 것을 명심) - 실제로 연관성에 대해 동적이거나 가변적 인 것이 있으면 생성자를 사용하여 관계를 설정할 수 있습니다. –

관련 문제