【发布时间】:2015-05-07 13:38:34
【问题描述】:
我有一个收集关于一篇文章的数据的表单,我想保存该数据,以及一个名为 Abstract 的模型,其中一篇文章包含许多摘要。我的模型如下所示:
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;
}
}
还有
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;
}
}
我的输入表单有一个名为“abstracts.body”的字段,在我的 ArticlesController 中我有这个功能:
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);
}
我的摘要表非常简单:
CREATE TABLE 'abstracts' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'article_id' INTEGER , 'user_id' INTEGER , 'body' TEXT, 'approved' BOOLEAN )
通过调试,我可以看到我的 $data 中有正确的“摘要”数组(在 add() 中),但它似乎从未尝试将其保存到数据库中。有人可以指出我的错误吗?谢谢!
【问题讨论】:
-
请在调用保存前显示
debug((string)$article) -
拯救了我的一天 :) 带有相关位的 patchEntity()。
标签: cakephp cakephp-3.0