Tôi có một biểu mẫu thu thập dữ liệu về một Điều, và tôi muốn lưu dữ liệu đó, cũng như cho một mô hình được gọi là Tóm tắt, trong đó một Điều có nhiều tóm tắt. Mô hình của tôi trông như thế này:Lưu mô hình liên quan trong Cakephp 3
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class AbstractsTable extends Table
{
public function initialize(array $config)
{
$this->belongsTo('Articles');
}
public function validationDefault(Validator $validator)
{
$validator
->notEmpty('body');
return $validator;
}
}
Và
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
$this->hasMany('Abstracts');
}
public function validationDefault(Validator $validator)
{
$validator ->notEmpty('category')
return $validator;
}
}
hình thức đầu vào của tôi có một trường có tên là 'abstracts.body', và trong ArticlesController của tôi, tôi có chức năng này:
public function add()
{
$data = $this->request->data;
$article = $this->Articles->newEntity($data, [
'associated' => ['Abstracts']
]);
if ($this->request->is('post')) {
$article->user_id = $this->Auth->user('id');
$data['abstracts']['user_id'] = $article->user_id;
$data['abstracts']['approved'] = 0;
$article = $this->Articles->patchEntity($article, $data, [
'associated' => ['Abstracts']
]);
if ($this->Articles->save($article, [ 'validate' => false,
'associated' => ['Abstracts']
]))
{
$this->Flash->success(__('Your article has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Unable to add your article.'));
}
$this->set('article', $article);
}
Bảng Tóm tắt của tôi khá đơn giản:
CREATE TABLE 'abstracts' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'article_id' INTEGER , 'user_id' INTEGER , 'body' TEXT, 'approved' BOOLEAN)
Từ gỡ lỗi Tôi có thể thấy rằng tôi có mảng 'tóm tắt' chính xác trong dữ liệu $ của tôi (trong add()), nhưng nó dường như không bao giờ cố gắng lưu nó vào cơ sở dữ liệu. Ai đó có thể vui lòng chỉ ra lỗi của tôi? Cảm ơn!
hiển thị 'debug ((string) $ article)' trước khi gọi lưu, vui lòng –
Lưu ngày của tôi :) PatchEntity() với bit được liên kết. –