Все мои настройки Doctrine2 выполняются в файлах YAML. У меня есть класс сущностей с именем LoanAppMenuProgress, где я пытаюсь выполнить функцию prePersist. Этот объект LoanAppMenuProgress имеет отношения oneToOne с другим классом с именем LoanApp. Существует ассоциация внешних ключей в таблице LoanAppMenuProgress, связанная с таблицей LoanApp в БД.Doctrine2 lifecycleCallbacks prePersist не запускается с конфигурацией YAML
У меня есть этот конфиг для моего класса LoanAppMenuProgress в LoanApp.LoanAppMenuProgress.orm.yml:
LoanEv\LoanAppBundle\Entity\LoanApp\LoanAppMenuProgress:
type: entity
repositoryClass: LoanEv\LoanAppBundle\Repository\LoanApp\LoanAppMenuProgress
table: loan_app_menu_progress
id:
id:
type: integer
generator: { strategy: auto }
### This is the OWNING side of the relationship
oneToOne:
loan_app:
targetEntity: LoanApp
inversedBy: loanapp_menu
joinColumn:
name: loan_id
referencedColumnName: id
fields:
loan_id:
type: integer
menu_id2:
type: integer
menu_id3:
type: integer
menu_id4:
type: integer
lifecycleCallbacks:
prePersist: [ updateMainMenuStatus ]
Это мой LoanApp.LoanApp.orm.yml файл:
LoanEv\LoanAppBundle\Entity\LoanApp\LoanApp:
type: entity
repositoryClass: LoanEv\LoanAppBundle\Repository\LoanApp\LoanAppRepository
table: loan_app
id:
id:
type: integer
generator: { strategy: auto }
## This is the INVERSE side of the relationship.
oneToOne:
loanapp_menu:
targetEntity: LoanAppMenuProgress
mappedBy: loan_app
fields:
bank_id:
type: integer
# etc.
В моей LoanAppMenuProgress Класс Entity, у меня есть следующий код:
namespace LoanEv\LoanAppBundle\Entity\LoanApp;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Util\Debug;
/**
* LoanEv\LoanAppBundle\Entity\LoanApp\LoanAppMenuProgress
*/
class LoanAppMenuProgress
{
private $id;
private $loan_id;
/**
* @var LoanEv\LoanAppBundle\Entity\LoanApp\LoanApp
*/
private $loan_app;
private $menu_id2 = 0;
private $menu_id3 = 0;
private $menu_id4 = 0;
// ...
public function updateMainMenuStatus()
{
echo("Inside prePersist's updateMainMenuStatus function. ");
}
}
Следующий код называется wit гин мой LoanAppController класс:
// ...
//Save the menuStatus changes.
echo("About to persist. ");
$em->persist($menuStatus[0]);
echo("Done persisting.");
$em->flush();
// ...
Когда я выполнить код в LoanAppController будет написана на моем экране следующее:
«О упорствовать. Совершено сохраняющиеся «
я пропускаю, что немного в середине, где выход должен прочитать:
». О упорствовать. Внутри updateMainMenuStatus функция prePersist. Done persistent. "
Изменения записываются в базу данных, и все функциональные возможности системы работают должным образом, за исключением prePersist(). Я довольно долго боролся с настройками yml, так что мое первоначальное предположение заключается в том, что моя установка YAML неверна.
В документации (насколько я понял) упоминается, что я должен добавить lifecycleCallbacks: и prePersist: элементы в файл yml, а затем убедитесь, что у меня есть (
У кого-нибудь есть идеи?
Спасибо.