雄辩的条件更新

Posted

技术标签:

【中文标题】雄辩的条件更新【英文标题】:Eloquent Conditional Update 【发布时间】:2013-05-31 10:16:42 【问题描述】:

我在 Laravel 3 中使用 Eloquent,想知道有条件地更新数据库表中的记录的最佳实践是什么。我将模型中的密钥设置为“电子邮件”字段,并发现我可以使用 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】:

你可以试试这个

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

【讨论】:

这确实使事情收紧了一些,在进行了更多调查并查看了其他代码之后,我意识到我的解决方案确实不是那么庞大。谢谢谢赫!

以上是关于雄辩的条件更新的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Laravel 雄辩模型更新 json 列

php Laravel雄辩地创建,更新,删除事件

在 laravel 中具有雄辩关系的更新期间从空值创建默认对象

Laravel 雄辩不更新 JSON 列:数组到字符串的转换

laravel 雄辩的查询构建器更新自定义时间戳字段而没有任何逻辑

Laravel 雄辩:更新父记录并使用一种形式在另一个表中创建新记录