HABTM을 사용하여 데이터베이스를 채 웁니다. 3 가지 모델이 있습니다. 사용자, 도서, 코멘트. 내가 HABTM users_books 테이블에서 사용하는 테이블 책과 사용자의 레코드에 가입하려면, 나는 모두가 외래 키로 설정이 기본 키, USER_ID 및 book_id, 사용 의견 바인딩 :cakephp의 올바른 모델 연결
PRIMARY KEY (user_id, book_id)
FOREIGN KEY (user_id, book_id) REFERENCES users_books (user_id, book_id)
표 책을, 그리고 users_books가 채워지지만 어떤 경우에는 채워진 댓글 테이블을 얻을 수 있지만 user_id 및 book_id 만 있으면 다른 데이터는 NULL입니다. 또는 IIF 나는 내가 가진 시려면 쿼리에서 (코멘트 배열) USER_ID 제거 :
Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
그래서 나는 그것이 어느 CakePHP의 규칙에 대해 또는 내가 뭔가 잘못하고있는 중이 야 것 같다.
public $hasAndBelongsToMany = array(
'User' =>
array(
'className' => 'User',
'joinTable' => 'users_books',
'foreignKey' => 'book_id',
'associationForeignKey' => 'user_id',
'unique' => true,
'conditions' => '',
'fields' => 'book_id',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
),
'Comment' =>
array(
'className' => 'Comment',
'joinTable' => 'comments',
'foreignKey' => 'book_id',
'associationForeignKey' => 'user_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',),);
그리고 코멘트 :
이public $belongsTo = array (
'Book' => array (
'foreignKey'=>false,
'conditions'=> array('Comment.book_id = UserBook.book_id')));
편집 :
데이터
$this->request->data['Book']['title'] = "title".rand(1,1220);
$this->request->data['Book']['author'] = "author".rand(1,1220);
$this->request->data['User']['id'] = $this->Auth->user('id');
$this->request->data['Book']['Comment']['body'] = "cm: ".rand(1,1220);
$this->Book->save($this->request->data, array('deep'=>TRUE));
을 저장하고 전화를 저장 여기
는 모델 책의 일부입니다 :$this->Book->saveAll($this->request->data, array('deep'=>TRUE));
당신은 ** ** 예약 hasMany의 댓글이 있어야합니다. 당신은 ** 도서 HABTM 코멘트 **를 가지고 있습니다. – AgRizzo
데이터를 저장하려고하는 코드와 저장하려는 배열의 구조를 표시 할 수 있습니까? – GatorGuy023
saveAll, saveAssociated를 모두 시도했지만 행운이 없습니다. – pt0