雄辩的条件更新

时间:2013-06-04 21:17:42

标签: php database orm laravel eloquent

我在Laravel 3中使用Eloquent,并且想知道有条件地更新数据库表中的记录的最佳实践。我的模型中的密钥设置为'email'字段,并且发现我可以使用find()方法进行检查,如果没有找到,我可以创建模型的新实例并保存记录但是这种方法看起来/感觉笨拙和笨重。

查看记录是否存在与传入的键值匹配并且基于创建新记录还是仅更新现有记录的最简洁方法是什么?

    $form = FormDB::find('blah@blah.com');

    if($form) {
        $form->text = "Updated";
        $form->save();
    } else {
        $form = new FormDB;
        $form->email = "blah@blah.com";
        $form->text = "Inserted";
        $form->save();
    }

1 个答案:

答案 0 :(得分:1)

你可以试试这个

$form = !FormDB::find('blah@blah.com') ? new FormDB : FormDB::find('blah@blah.com');
$form->email = !$form->email ? "blah@blah.com" : $form->email;
$form->text = !$form->text ? "Inserted" : "Updated";
$form->save();