Ho un modulo che raccoglie dati su un articolo e desidero salvare tali dati, nonché un modello denominato Abstract, in cui un articolo contiene molti abstract. I miei modelli simile a questa:Salvataggio di modelli associati in 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;
}
}
E
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;
}
}
mio modulo di ingresso ha un campo denominato 'abstracts.body', e nella mia ArticlesController ho questa funzione:
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);
}
Il mio tavolo Abstracts è piuttosto semplice:
CREATE TABLE 'abstracts' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'article_id' INTEGER , 'user_id' INTEGER , 'body' TEXT, 'approved' BOOLEAN)
Dal debug posso vedere che ho la corretta matrice di 'abstract' all'interno dei miei $ data (in add()), ma non sembra che abbia mai provato a salvarlo nel database. Qualcuno può indicare il mio errore? Grazie!
mostra un 'debug ((stringa) $ articolo)' prima di chiamare save, per favore –
Salvato il mio giorno :) The patchEntity() con il bit associato. –