게시물에 사용자 (belongsTo)가 있고 사용자의 프로필 (hasOne)이 있습니다. 일반적으로 모든 것이 작동합니다 : 나는 Post to User와 User to Profile에 접근 할 수 있습니다.Cakephp : "필드"의 연결 연관
게시물에서 모든 항목은 일반 찾기를 사용합니다. 결과는 더 많거나 적은이 (난 그냥 예를 들어, 일부 키를 삭제) : 난 단지 몇 가지 필드를 추출 할 때 나는 "필드"를 사용할 때
array(
'Post' => array(
'id' => '1',
'category_id' => '1',
'user_id' => '1',
'title' => 'Example',
'text' => '',
),
'User' => array(
'password' => '*****',
'id' => '1',
'group_id' => '1',
'username' => 'mirko',
'status' => 'active',
'Profile' => array(
'id' => '1',
'user_id' => '1',
'first_name' => 'Mirko',
'last_name' => 'Pagliai',
),
)
)
문제가 온다.
'fields' => array('id', 'title', 'User.id')
을하고 그 결과는 다음과 같습니다 : 는 예를 들어,이 작품
array(
'Post' => array(
'id' => '1',
'title' => 'Articolo di prova :-)'
),
'User' => array(
'id' => '1'
)
)
그러나 나는 항상 정보에 액세스하는 방법, "필드"를 사용하여, 이해가 안 돼요. don'yt 일이 : "SQLSTATE [42S22] : 발견되지 칼럼 : 1054 알 수없는 열 'User.Profile.id' '필드 목록'에서 오류"
'fields' => array('id', 'title', 'User.id', 'Profile.id')
'fields' => array('id', 'title', 'User.id', 'User.Profile.id')
난 항상이 오류가 발생합니다.
무엇이 잘못 되었나요? 감사.
편집 : 나는 포함 동작을 사용하고 있지 않습니다. 어쩌면 이것이 문제일까요? 이 경우 필수적입니까? PAGINATE를 사용
예 :
$this->paginate = array(
'conditions' => $conditions,
'fields' => array('id', 'title', 'User.id', 'Profile.id'),
'limit' => 10,
'recursive' => 2,
);
EDIT2 : @Hoff에 덕분에, 내가 가까이 솔루션입니다. 그러나 여전히 잘못된 것이 있습니다 (그리고 Containable은 매우 유용합니다!).
...
class AppModel extends Model {
public $actsAs = array('Containable');
public $recursive = -1;
...
을하지만이 작동하지 않습니다 : AppModel.php에서 나는 추가
$this->paginate = array(
'conditions' => $conditions,
'contain' => array(
'User' => array(
'fields' => array('id'),
'Profile' => array(
'fields' => array('id', 'full_name'),
),
),
'Category' => array(
'fields' => 'title',
),
),
'fields' => array('id', 'user_id', 'category_id', 'title', 'created', 'modified', 'published'),
'limit' => 10,
);
원인은 내가 얻을 :
array(
(int) 0 => array(
'Post' => array(
'id' => '1',
'user_id' => '1',
'category_id' => '1',
'title' => 'Articolo di prova :-)',
'created' => '2012-06-21 18:46:00',
'modified' => '0000-00-00 00:00:00',
'published' => true
),
'Category' => array(
'title' => 'prova',
'id' => '1'
),
'User' => array(
'id' => '1'
)
)
)
을하지만 (사용자에게 이메일을 모든 필드를 추가하는 경우 , 사용자 이름, 비밀번호 등), 작동 방식 :
'User' => array(
'fields' => array('id', 'username'),
'Profile' => array(
'fields' => array('id', 'full_name'),
),
),
는 내가 얻을 :
이array(
(int) 0 => array(
'Post' => array(
'id' => '1',
'user_id' => '1',
'category_id' => '1',
'title' => 'Articolo di prova :-)',
'created' => '2012-06-21 18:46:00',
'modified' => '0000-00-00 00:00:00',
'published' => true
),
'Category' => array(
'title' => 'prova',
'id' => '1'
),
'User' => array(
'id' => '1',
'username' => 'mirko',
'Profile' => array(
'id' => '1',
'full_name' => 'Mirko Pagliai'
)
)
)
)
나는 당신의 발견 호출을 볼 수 있을까요? 또한 Containable 비헤이비어를 사용하고 있습니까? – Hoff
첫 번째 게시물을 편집하여 답변했습니다. –