내가 두 테이블을 가지고 '사용자'이처럼 보이는 '게시물':사용자 ID를 외래 키로 사용하는 방법은 무엇입니까?
users:
- id
- username
- password
...
posts:
- id
- user_id (foreign key referencing users.id)
- text
기본적으로, 사용자가 여러 게시물 (블로그 형 게시물)가 있습니다. 이제 로그인 한 사용자로 새 게시물을 만들려고하는데 작동하지 않습니다. 여기에 내가 무슨 짓을했는지의 :
Error: SQLSTATE[23000]: Integrity constraint violation:
1452 Cannot add or update a child row: a foreign key
constraint fails (`yams`.`posts`, CONSTRAINT `user_id`
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
ON DELETE NO ACTION ON UPDATE NO ACTION)
내가 여기서 뭔가를 놓치고 있습니까 :
// 'User' model
class User extends AppModel
{
public $name = 'User';
public $hasMany = array('Post');
...
// 'Post' model
class Post extends AppModel
{
public $name = 'Post';
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
// In PostsController
public function create()
{
if($this->request->is('post'))
{
$this->Post->create();
if($this->Post->save($this->request->data)
{
// Success
}
}
}
// In the post view
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('Post', array('action' => 'create')); ?>
<fieldset>
<legend>
<?php echo __("Write a post"); ?>
</legend>
</fieldset>
<?php echo $this->Form->end(__('Post')); ?>
내가 게시물을 작성하고 '포스트'를 클릭하면, 내가 무결성 제약 조건 위반을 얻을? 사용자 ID가 모델에 저장되지 않은 것 같습니다.
는편집 : 전혀 ID가 없습니다
INSERT INTO `yams`.`posts` (`text`) VALUES ('this is a test post.')
...
도움이되는지 확인하십시오. http://stackoverflow.com/a/16805528/1003917 –
Post 모델의 $ belongsTo 변수가 foreignKey를 지정할 필요가 없습니다. - CakePHP는 다른 것을 지정하지 않으면 "user_id"라는 열을 자동으로 찾습니다. – jackel414
게시물 테이블의 user_id 필드에 null을 허용 했습니까? – makallio85