1
사용자가 특정 사용자에게 파일을 업로드하고 파일을 업로드 할 수있는 응용 프로그램에 대해서는 tutorial을 따르고 있습니다.Cakephp HABTM join table empty
upload.php로 :
var $hasAndBelongsToMany = array(
'SharedUser' => array(
'className' => 'User',
'joinTable' => 'uploads_users',
'foreignKey' => 'upload_id',
'associationForeignKey' => 'user_id',
'unique' => 'keepExisting'
)
);
User.php : 그것은 하나 개의 예외로 정상적으로
var $hasMany = array(
'Upload' => array(
'className' => 'Upload',
'foreignKey' => 'user_id',
'dependent' => false
)
);
var $hasAndBelongsToMany = array(
'SharedUpload' => array(
'className' => 'Upload',
'joinTable' => 'uploads_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'upload_id',
'unique' => true
)
);
모든 것
이 작업을 다음과 같이 사용자와 업로드 간의 HABTM 관계가있다 새 업로드 작성시 uploads_users 테이블이 갱신되지 않습니다. 데이터를 수동으로 삽입하면 뷰를 사용하여 데이터를 찾고 표시 할 수 있습니다. 누구든지 잘못된 것을 제안 할 수 있습니까? 여기 는 uploads_users 테이블입니다 : 내가 튜토리얼에서 추가 업로드 방법을 약간 변경 한+-----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| upload_id | char(36) | NO | | NULL | |
| user_id | char(36) | NO | | NULL | |
+-----------+----------+------+-----+---------+----------------+
(그래서 실패 저장 데이터베이스가있는 경우는 업로드 된 파일을 삭제), 그래서 여기에 그뿐만 아니라입니다 :
function add() {
if (!empty($this->data)) {
$this->Upload->create();
if ($this->uploadFile()) {
try {
if (!$this->Upload->saveAll($this->request->data)) {
throw new Exception('Couldn't save to database.');
}
$this->Session->setFlash(__('The upload has been saved', true));
$this->redirect(array('action' => 'index'));
}
catch (Exception $e) {
unlink(APP . 'tmp/uploads/' . $this->request->data['Upload']['id']);
$this->Session->setFlash(__('The upload could not be saved: ' . $e->getMessage(), true));
}
} else {
$this->Session->setFlash(__('The upload could not be saved.', true));
}
}
$users = $this->Upload->User->find('list');
$this->set(compact('users', 'users'));
}
function uploadFile() {
$file = $this->data['Upload']['file'];
if ($file['error'] === UPLOAD_ERR_OK) {
$id = String::uuid();
if (move_uploaded_file($file['tmp_name'], APP.'tmp/uploads'.DS.$id)) {
$this->request->data['Upload']['id'] = $id;
$this->request->data['Upload']['user_id'] = $this->Auth->user('id');
$this->request->data['Upload']['filename'] = $file['name'];
$this->request->data['Upload']['filesize'] = $file['size'];
$this->request->data['Upload']['filemime'] = $file['type'];
return true;
}
}
return false;
}
감사합니다. 실제로 내 문제의 원인이었던 SharedUser 행이 누락 된 것 같습니다. – knirirr