2013-08-28 2 views
0
여기

enter image description here+ cakephp2.x

내가 설정

$userStatusCondition = array('AND' => array(
                'OR'=> array(
                    'TransactionStatus.buyer_status_id'=>$user_status_id, 
                    'TransactionStatus.seller_status_id'=>$user_status_id, 
                   ) 
                  ) 
               ); 

병합 조건 (다른 조건 + user_status 조건) TransactionModel에서

$transactions = $this->Transaction->find('all',array(
                  'conditions'=> Set::merge($otherConditions, $userStatusCondition), 
                  'recursive'=>2)); 

내 함유 성 조건은

public $actsAs = array('Containable'); 

public $belongsTo = array(
      'UserStatus' => array(
     'className' => 'UserStatus', 
     'foreignKey' => 'buyer_status_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
      'UserStatus' => array(
     'className' => 'UserStatus', 
     'foreignKey' => 'seller_status_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    ); 
,

문제

1

) 나는 재귀 2를 사용하고 싶지 않다 : 그것은 찾기 방법 감소 - 내가 함유 성이 제대로 나는 재귀 제거 할 필요가 있다고 생각 후에 어떻게 생각하는지 이제까지
2)이 User_Status 테이블에 네 개의 user_statuses이 내가 buyer_status_id에 의해 필터링 거래를 찾으려면 또는

을 seller_status_id 1) 대기 2)주의 3) 블록 4) 전체 I donno 새로운 동작을 생성하는 방법 -의이 Using Contain

+0

무엇을하고 싶습니까? – Ikong

+0

User_Status 테이블에 4 개의 user_statuses가 있습니다. 1) 대기 2)주의 3) 블록 4) buyer_status_id 또는 seller_status_id로 필터링 된 트랜잭션을 찾으십시오. – Fury

+0

containable을 사용하는 대신 대체 방법으로 응답했습니다. 그것이 당신에게 아이디어를 줄 수 있기를 바랍니다. – Ikong

답변

1

또 다른 방법에 대한 작은 기사가 테이블 관계에 연결하는 것은 bindMod를 사용하는 것이다. el을 눌러 강제 가입하십시오.

다음은 4 개의 테이블 항목 -> 카테고리 -> 섹션 -> 구분을 바인딩하는 코드입니다. 당신은 관계의 범위 내에서 무엇이든 찾을 수 있습니다.

$this->unbindModel(array(
    'belongsTo' => array('Category') 
)); 

$this->bindModel(array(
    'hasOne' => array(
     'Category' => array(
      'foreignKey' => false, 
      'conditions' => array('Category.id = Item.category_id') 
     ), 
     'Section' => array(
      'foreignKey' => false, 
      'conditions' => array('Section.id = Category.section_id') 
     ) 
     'Division' => array(
      'foreignKey' => false, 
      'conditions' => array('Division.id = Section.division_id') 
     ) 
    ) 
)); 
$result = $this->find('first', array(
    'conditions' => array('Item.id' => $id), 
    'contain' => array('Category', 'Section', 'Division'), 
    'fields' => array('Division.id') 
)); 

이렇게하면 테이블 범위의 모든 항목을 자유롭게 쿼리 할 수 ​​있습니다.

자세한 정보는 여기 : http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations

+0

시체 감사합니다. 나는이 기사를 읽었지만 심층적이지 않기 때문에 구현할 수 없었다. 나는 그것을 지금 다시 시도 할 것이다. 나는 당신에게 알려준다. - 여전히 public $ actsAs = array ('Containable'); in TransactionModel – Fury

+0

나는 그것을 성공적으로 구현 했으니 확신 할 수있다. 건배 – Ikong

+0

반드시 $ actsAs = array ('Containable');을 넣을 필요는 없습니다. 바인딩 모델에서 올바른 조건을 확인했는지 확인하십시오. – Ikong

관련 문제