Cake PHP에서 관련 테이블 FieldName = 'X'가있는 테이블에서 선택하십시오.

StackOverflow https://stackoverflow.com/questions/1013149

  •  06-07-2019
  •  | 
  •  

문제

CakePHP에는 두 개의 테이블, 국가 및 네트워크가 있습니다. 그들은 HABTM 관계를 가지고 있으며 country_networks에 합류합니다.

네트워크의 '이름'필드 = 'O2'가있는 국가 테이블에서 모든 국가를 얻으려고 노력하고 있습니다.

기본 find ()를 사용하여 이것을 할 수 없다는 것을 깨달았으므로 포함 가능한 동작을 실험하고 있습니다. 반환 된 데이터를 제한했지만 '포함 가능'이 원하는대로 정확하게 작동하지 않는 것처럼 보입니다. 그녀는 내 코드 :

$countries = $this->Country->find('all', array('contain' => array(
                                'Network' => array(
                                'conditions' => array('Network.name =' => "o2"),
    )
    )));

그러나이 쿼리는 모든 국가와 'O2'인 경우 네트워크를 반환합니다. 내가 정말로해야 할 일은 네트워크가있는 국가 만 'O2'라는 이름과 다른 사람들도 반환하는 것입니다.

누구든지 도울 수 있습니까? 감사.

도움이 되었습니까?

해결책

귀하의 질문은 귀하의 질문을 정확히 반환합니다. 네트워크에서 선택하십시오.

$countries = $this->Country->Network->find('first', array(
    'conditions' => array('Network.name' => "o2"),
    'contain' => array('Country')
));

$countries = $countries['Country'];

다른 팁

"= '=>"무엇입니까? "Network.name"이후 "="기호 "를 사용할 필요가 없습니다.

다음과 같은 일을 할 수 있어야합니다.

$this->Country->hasAndBelongsToMany['Network']['conditions'] = array('Network.name'=>'o2');
$myCountries = $this->Country->find('all');

나는 이것을 테스트하지 않았지만, 당신이 필요한 곳에 당신을 매우 가까이 데려 가야합니다.

또한 이와 같이 hasandbelongstomany 배열을 변경하면 현재 페이지로드 중에 해당 모델에 대한 모든 후속 쿼리에 영향을 미칩니다 (그러나 다음에 모델이 인스턴스화 될 때는 재설정됩니다).

나는 문 밖으로 나가는 길에 있습니다. 간단한 설명에 대해 죄송합니다.

나는 당신이 원하는 것이 HABTM 관계라고 생각하지만 관련 모델의 데이터를 기반으로 필터링 할 수 있습니다. 이렇게하려면 Cake 매뉴얼에서 "포함 가능한"동작을 확인하십시오. 그것이 당신이 추구하는 것임을 확신합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top