nev*_*ame 2 doctrine unique-constraint
每当我插入已存在于数据库中的实体时,我都会收到错误,因为其中一个字段(email
)存在唯一约束.
所以我想检查它是否已经存在; 如果没有,我插入它.
我的代码看起来像这样:
$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();
}
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
将您拥有的代码放入UserTable类的方法中,例如insertIfNotExists()
:
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;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以调用该方法,返回的对象将是现有记录(如果有的话),或者您刚刚创建的记录.
归档时间: |
|
查看次数: |
10120 次 |
最近记录: |