cakephp 2. X выполнений обновляют/экономят для 2 моделей/столов

У меня есть 2 стола/модели (не имейте никакого отношения друг с другом), которые должны быть обновлены в то же время, и если любой не может закончить процесс обновления, другой не будет обновлен....

если я пробую

if($this->model1->save($data))
   $this->model2->save($data)

model1 будет обновлен, неважно model2 успешно спасен или нет.

эта любая функция обратной перемотки, что я отменяю первое, экономят действие, если вторые экономят действие, терпит неудачу

1
nl ja de
Поддержки пирога сделки который кажется, что это было бы релевантно. Я don' t знают ваше приложение, но если вы can' t имеют один без другого, тогда это кажется, что они , связанный до некоторой степени. Могло бы быть достойным рассмотрения.
добавлено автор Ross, источник

1 ответы

Вы могли явно начать и передать/обратными перемотка сделки, как предложено в комментарии Росс .

Но CakePHP даже поддерживает это из коробки с saveAssociated (). Можно просто передать данные для обеих моделей:

For saving a record along with its related record having a hasOne or belongsTo association, the data array should be like this:

$data = array(
      'User' => array('username' => 'billy'),
      'Profile' => array('sex' => 'Male', 'occupation' => 'Programmer'),
);

$Article->saveAssociated($data);

Есть выбор , атомный , который управляет использованием сделок:

атомный: Если верный ( дефолт ), попытается сохранить все отчеты в единственной сделке. Должен быть установлен в ложный, если база данных/стол не поддерживает сделки.

Если проверка потерпит неудачу для одной из моделей, другой не будет спасен также.

Обратите внимание, что ваша база данных должна поддержать сделки. Для MySQL только у двигателя хранения InnoDB есть операционная поддержка, MyISAM не делает. Посмотрите сравнение двигателей хранения MySQL.

2
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp