Какова наилучшая практика в отношении метода доктрины Calling ()?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Какова наилучшая практика в отношении метода доктрины Calling ()?

Сообщение Anonymous »

В доктрине существует разделение между операциями Persist () и flush () . Похоже, всякий раз, когда вы хотите вставить/обновить свою сущность, вы должны вызывать два метода один за другим. И большинство разработчиков делают это таким образом. Но мне интересно, было ли это предназначено для использования таким образом. < /P>
Большую часть времени я вижу репозитории, подобные этим: < /p>

Код: Выделить всё

class EntityRepo extends ServiceEntityRepository
{
public function save(Entity $entity): void
{
$this->getEntityManager()->persist($entity);
$this->getEntityManager()->flush();
}
)
И этот подход имеет большой недостаток, даже если оставить словесность в стороне-Call to flush () будет синхронизировать All не засеченные сущности с базой данных, а не только тот, который мы сохраняем сейчас.

Код: Выделить всё

$this->getEntityManager()->flush($entity);
Для ограничения синхронизации только одной сущностью, но этот подход был устарел доктриной. И это хорошо придерживается «функциональной» идеи сделать доменное ядро ​​«чистым» любых побочных эффектов: мы просто перемещаем все побочные эффекты за пределами кода домена. Я ошибаюсь? Какие недостатки имеют такой подход? Несвязанные объекты.
Также я попытался вызовать flush () один раз в конце «бизнес -транзакции», например, в контроллере или в промежуточном программном обеспечении, но выглядит так, как будто этот подход является непопулярным, и я боюсь, что что -то неправильно понял.


Подробнее здесь: https://stackoverflow.com/questions/771 ... f-doctrine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»