Как сохранить данные ToMany в Cake 3.0?

Я новичок в 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 кажется слишком коротким или очень продвинутым для начинающего, как я.

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

//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 Сущность класса делает его apples имущество _accessible:

<?php
namespace app\Model\Entity;

use Cake\ORM\Entity;

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

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

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

3

Другие решения

Смотри сюда: http://book.cakephp.org/3.0/en/orm/saving-data.html#saving-belongstomany-associations

Попробуйте установить $basket->dirty('apples', true);, Это должно сказать, что здесь есть несохраненные ассоциации, о которых нужно заботиться.

2

По вопросам рекламы [email protected]