Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 雄辩的条件更新_Php_Database_Orm_Laravel_Eloquent - Fatal编程技术网

Php 雄辩的条件更新

Php 雄辩的条件更新,php,database,orm,laravel,eloquent,Php,Database,Orm,Laravel,Eloquent,我正在使用Laravel3中的Eloquent,想知道有条件地更新数据库表中的记录的最佳实践是什么。我将模型中的密钥设置为“email”字段,并发现我可以使用find()方法进行检查,如果未找到任何内容,我可以创建模型的新实例并保存记录,但这种方法看起来/感觉笨拙且繁琐 查看是否存在与传入的键值相匹配的记录并基于该键值创建新记录或仅更新现有记录的最干净方法是什么 $form = FormDB::find('blah@blah.com'); if($form) {

我正在使用Laravel3中的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();
    }
你可以试试这个

$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();

这确实让事情变得更为紧凑,在做了更多的调查和查看其他代码之后,我意识到我的解决方案其实并没有那么庞大。谢谢你,酋长!