데이터베이스에 이미 존재하는 엔티티를 삽입 할 때마다 필드 중 하나에 고유 제한 조건 (email
)이 있으므로 오류가 발생합니다.Doctrine으로 삽입하기 전에 엔티티가 이미 존재하는지 확인하십시오.
그래서 이미 존재하는지 확인하고 싶습니다. 그렇지 않다면 삽입합니다.
내 코드는 다음과 같습니다
$q = Doctrine_Query::create()
->from('User u')
->where('u.email = ?', $email);
$object = $q->fetchOne();
if(! is_object($object)) {
$user = new User();
$user-email = $email;
$user->save();
}
이 작업을 수행하는 쉬운 방법이 있나요?
public function insertIfNotExists(User $user)
{
// Check if it exists first
$q = self::create("u")
->where("u.email = ?", $user->email)
->execute();
// Do we have any?
if ($q->count())
{
// Yes, return the existing one
return $q->getFirst();
}
// No, save and return the newly created one
$user->save();
return $user;
}
지금 당신이 메소드를 호출 할 수 있으며, 반환되는 객체는 기존 기록 될 것입니다 (있는 경우), 또는 :