나는 조건의 상당히 복잡한으로 find('all')
을하고 있어요 :CakePHP의 : 여러 관련 기록이있을 때 반환 필드를 지정하는 방법
array(
(int) 0 => array(
'User' => array(
'id' => '381'
),
'Resume' => array(
'id' => '15'
),
'Attempt' => array(
(int) 0 => array(
'id' => '16072',
'user_id' => '381',
'test_id' => '8',
'status' => 'complete'
),
(int) 2 => array(
'id' => '16073',
'user_id' => '381',
'test_id' => '8',
'status' => 'complete'
)
: 반환 된 데이터는 다음과 같습니다
array(
'conditions' => array(
(int) 0 => 'Attempt.test_id = 8',
(int) 1 => 'Attempt.score > 60',
(int) 2 => array(),
(int) 3 => array(
(int) 0 => 'Resume.has_file = 1'
)
),
'joins' => array(
(int) 0 => array(
'table' => 'attempts',
'alias' => 'Attempt',
'type' => 'LEFT',
'conditions' => array(
(int) 0 => 'Attempt.user_id = User.id AND Attempt.test_id != 5'
)
)
),
'contain' => array(
(int) 0 => 'Resume',
(int) 1 => 'Attempt',
(int) 2 => 'Tag'
),
'group' => 'User.id',
'limit' => (int) 1,
'fields' => array(
(int) 0 => 'User.id',
(int) 1 => 'Resume.id'
)
)
쿼리를 실행하는 데 영원히 그리고 하루가 걸리고 User.id 만 필요하므로 불필요한 필드를 제거하려고합니다. 그것은 hasOne 연관을 위해 작동하지만 hasMany는 문서의 구문과 일치하지 않습니다. 예를 들어 'limit'=>array('Attempt.id')
은 $ user [ 'Attempt'] [ 'id']가 없기 때문에 오류가 발생합니다. 대신 $ user [ 'Attempt'] [#] [ 'id']입니다.
어떻게하면됩니까? 또한이 쿼리의 속도를 높이는 조언을 듣고 싶습니다.
고마워요. Guillermo. 나는이 쿼리가 태그 모델에 어떤 조건도 가지지 않았음에도 불구하고 많은 것들이 그렇게 할 것이라는 것을 분명히해야만했다. 그래서 나는 그것을 없애거나 어떤 협회도 제거 할 수 없습니다. – emersonthis
좋아, 아마 우리가 조건의 전체 집합과 당신이 더 나은 당신을 도울 수있는이 쿼리에서 필요한 것을 말해. –
다음은 전체 조건 집합입니다. 나는 단지 User.id를 얻을 필요가있다. 다른 모든 포함 물은 필터 일뿐입니다. 다양한 조건이 해당 테이블을 참조합니다. – emersonthis