2015-08-19 2 views
2

Я новичок в cakephp. Документация на http://book.cakephp.org/3.0/en/orm/associations.html#belongstomany-associations и http://book.cakephp.org/3.0/en/orm/saving-data.html#saving-with-associations выглядит слишком короткой или очень продвинутой для новичка, подобного мне.Как сохранить ownToMany данные в Cake 3.0?

Из того, что я мог понять, я сделал следующее.

//Table Baskets belongsToMany Apples 
//At BasketsTable.php in initialize() 
$this->belongsToMany('Apples',[ 
      'joinTable' => 'apples_baskets' 
     ]); 

Объединение таблицы apples_baskets в MySQL:

+---+---------+----------+ 
|id |apple_id |basket_id | 
-------------------------- 
| |   |   | 
-------------------------- 

Я сделал данные после запроса появляться на контроллере, как:

Array 
(
    [id] => 1 
    [xyz] => blahblah 
    [apples] => Array 
     (
      [_ids] => Array 
       (
        [0] => 1 
       ) 

     ) 

    [amount] => 15000 
) 

Теперь, когда я выполняю save, только Таблица корзин обновляется, таблица соединений остается нетронутой, и ошибка не возникает.

Я знаю, что я чего-то не хватает, но не могу понять. Пожалуйста помоги !!!

ответ

2

Попробуйте проверить, что ваш Baskets Entity класса делает его apples свойство _accessible:

<?php 
namespace app\Model\Entity; 

use Cake\ORM\Entity; 

class Basket extends Entity { 
    public $_accessible = [ 
     'apples', // <-- make sure this is present 
    ]; 
} 

довольно распространенная Гоча при работе с этими новыми классами сущностей пытается загрузить их с данными (с помощью Table::newEntity() или Table::patchEntity()), но некоторые из этих данных фактически не сохраняются в Entity из-за защиты массового присвоения.

Код: http://book.cakephp.org/3.0/en/orm/entities.html#mass-assignment