php - CakePHP 3.1 won't save simple hasMany relationship -


i have 2 entities, site , sitesmetadata want relate hasmany , belongsto association.

i created per cakephp 3.0 book reason it's not generating or saving association.

here relationships

sitestable:

$this->hasmany('sitesmetadata', [     'foreignkey' => 'site_id',     'dependent' => true ]); 

and sitesmetadatatable (auto generated baking model):

$this->belongsto('sites', [     'foreignkey' => 'site_id',     'jointype' => 'inner' ]); 

here controller function:

    $site = $this->sites->newentity();     if ($this->request->is('post')) {         $site = $this->sites->patchentity($site, $this->request->data, ['associated' => ['sitesmetadata']]);         if ($this->sites->save($site)) {             $this->flash->success(__('the site has been saved.'));             return $this->redirect(['_name' => 'admin:home']);         } else {             $this->flash->error(__('the site not saved. please, try again.'));         }     } 

here dump of $this->request->data , $site after patchentity:

 /src/controller/admin/sitescontroller.php (line 33)  [ 'title' => 'test', 'alias' => 'sdfs', 'layout' => 'default', 'sort' => '3', 'sites_meta_data' => [     (int) 0 => [         'key' => 'keyword',         'value' => 'test'     ] ] ]  /src/controller/admin/sitescontroller.php (line 34)  object(app\model\entity\site) {  'title' => 'test', 'alias' => 'sdfs', 'layout' => 'default', 'sort' => (int) 3, '[new]' => true, '[accessible]' => [     'title' => true,     'alias' => true,     'layout' => true,     'sort' => true ], '[dirty]' => [     'title' => true,     'alias' => true,     'layout' => true,     'sort' => true ], '[original]' => [], '[virtual]' => [], '[errors]' => [], '[repository]' => 'sites'  } 

also of note. tried creating sitesmetadata using tableregistry::get('sitesmetadata')->newentity $this->request->data['sites_meta_data'] , worked, set $site->sites_meta_data[] , set dirty , tried saving , error:

sqlstate[42000]: syntax error or access violation: 1064 have error in sql syntax; check manual corresponds mysql server version right syntax use near 'key, value, created, modified) values (22, 'keyword', 'test', '2015-09-25 18:55:' @ line 1 

in case, 22 id of site after gets created.

update:

despite docs mentioning needing when using newentity() , belongstomany associations (as far can see), added sites_meta_data site entity's $_accessible attribute , above sql error while using $this->sites->patchentity($site, $this->request->data ...) , builds sitesmetadata entity.


Comments