我在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();
}
答案 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();