問題:
WordPress Symfony バンドルに取り組んでおり、そのエンティティを作成しています。
エンティティがあり、Comment
エンティティに$comment->user
マップされていUser
ます。
ただし、 WordPress0
はゲスト ユーザーを表すために使用します。ID 0 のユーザーは決して存在しないため、Doctrine で多くの問題が発生します。これにより、次の問題が発生します。
$comment->getUser()
行が の場合、エンティティが見つからないという例外をスローする可能性がありuser_id
ます0
。$comment->setUser()
null
repensent guest には使用できず( を使用する必要0
があります)、new User(0)
どちらも使用できないため、 は機能しません。
質問:
デフォルトでは、次のコードはデータベースの列に保存null
します:user_id
$comment->setUser(null);
Doctrine を0
(代わりにnull
)user_id
列に保存することはできますか?
またはさらに良いことに、列を扱うときに0
とを交換できますか?null
user_id
お時間をいただきありがとうございます。
テストケース:
// if a guest posted a comment, pass null to setUser()
// although the actual value will be saved to user_id column is 0
$guestComment->setUser(null);
// if a comment was posted by a guest, getUser() should return null
// although the actual value returned by user_id column is 0
$guestComment->getUser(); // return null
// if a member posted a comment, pass a User entity to setUser()
$memberComment->setUser(new User());
// if a comment was posted by a member, getUser() should return the User entity
$guestComment->getUser(); // return User entity.
方向:
カスタム マッピング タイプの作成を検討しています http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html