cakephp 3.x data not saving when Saving data into 2 tables with has many relation
I have two tables articles and comments, comments has field article_id relation between them us article hasMany Comments and Comment belongs to Article, i have following code in my article/add.ctp view file
<?php
$this->Form->create($article)
echo $this->Form->input('title');
echo $this->Form->input('status');
echo $this->Form->input('comments.0.title');
echo $this->Form->input('comments.0.description');
$this->Form->end()
?>
This is my controller code
public function add() {
$article = $this->Articles->newEntity();
if ($this->request->is('post')) {
$article = $this->Articles->patchEntity($article, $this->request->data, [
'associated' => ['Commments']
]);
if ($this->Articles->save($article)) {
$this->Flash->success(__('The article has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The article could not be saved. Please, try again.'));
}
}
$this->set(compact('article'));
$this->set('_serialize', ['article']);
}
This is my Article model
<?php
class ArticlesTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
$this->table('articles');
$this->displayField('title');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->hasMany('Comments', [
'foreignKey' => 'article_id'
]);
}
}
?>
This is my Comment model
<?php
class CommentsTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
$this->table('comments');
$this->displayField('id');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Articles', [
'foreignKey' => 'article_id',
'joinType' => 'INNER'
]);
}
}
?>
and when i print the $article after patch entity than showing below array its not createing the comment model object its create simple array under the article model object
App\Model\Entity\Article Object
(
[title] => Article1
[status] => 1
[comments] => Array
(
[0] => Array
(
[title] => Article 1 Comment 1
[description] => mnftrduio
)
)
[[new]] => 1
[[accessible]] => Array
(
[*] => 1
)
[[dirty]] => Array
(
[title] => 1
[status] => 1
[comments] => 1
)
But data save only in article table not in comment table
nothing wrong with your code, just missing some echo, semicolon, and mistype comments with triple 'm'
after you correct it, it should working :)