すべてのDoctrine2設定はYAMLファイル内で行われます。私は、prePersist関数を実行しようとしているLoanAppMenuProgressという名前のエンティティクラスを持っています。このLoanAppMenuProgressエンティティには、LoanAppという別のクラスとのoneToOne関係があります。 DBのLoanAppテーブルに関連付けられたLoanAppMenuProgressテーブルには、外部キーの関連付けがあります。Doctrine2 lifecycleCallbacks prePersistがYAML設定で起動しない
私はLoanApp.LoanAppMenuProgress.orm.ymlで私LoanAppMenuProgressクラスのために、この設定を持っている:私のLoanAppMenuProgressで
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.
:これは私のLoanApp.LoanApp.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 ]
ですエンティティクラス、私は次のコードを持っています:
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. ");
}
}
次のコードはウィット私は画面に書き込まれます、次のLoanAppControllerでコードを実行すると
// ...
//Save the menuStatus changes.
echo("About to persist. ");
$em->persist($menuStatus[0]);
echo("Done persisting.");
$em->flush();
// ...
:持続する
「について私のLoanAppControllerクラスをホアヒン。 Doneを持続する「
を私は出力が読むべき途中でそのビットが欠落しています:
」。持続しようとしています。 prePersistのupdateMainMenuStatus関数の内部にあります。完了しました」
変更がデータベースに書き込まれ、システムのすべての機能がprePersist()を除いて期待通りに機能しています。かなり長い間yml設定で苦労しました。
ドキュメントには、lifecycleCallbacks:とprePersist:itemsをymlファイルに追加してから、私が使用していることを確認する必要があることが書かれています。
誰もがアイデアを持っていますか?
ありがとうございます。