在yii2activerecord中保存新的数据库记录是否有一种速记方法?

在yii2activerecord中保存新的数据库记录是否有一种速记方法?,activerecord,yii2,shorthand,Activerecord,Yii2,Shorthand,在使用Yi2 ActiveRecord时,是否有一种简写的方法来保存新记录 以下是文档中的一些示例: $customer = new Customer(); $customer->name = 'Qiang'; $customer->save(); 而且 Yii::$app->db->createCommand()->insert('customer', ['name' => 'Sam'])->execute(); 如果有一种像……这样的速记方法就好

在使用Yi2 ActiveRecord时,是否有一种简写的方法来保存新记录

以下是文档中的一些示例:

$customer = new Customer();
$customer->name = 'Qiang';
$customer->save();
而且

Yii::$app->db->createCommand()->insert('customer', ['name' => 'Sam'])->execute();
如果有一种像……这样的速记方法就好了

Customer::create(['name' => 'Qiang']);

…但我在文件里找不到。想知道我是否遗漏了什么。或者我需要创建自己的自定义ActiveRecord类吗?

一些糟糕的做法

(new Customer(['name' => 'Qiang',]))->save();
如果您需要返回模型

($customer = new Customer(['name' => 'Qiang',]))->save();
“。或者我需要创建自己的自定义ActiveRecord类吗?”


对于您的案例来说,这将是一个很好的解决方案,但是每次您从Gii生成模型时,您都不需要忘记更改父类的一些丑陋方式

(new Customer(['name' => 'Qiang',]))->save();
如果您需要返回模型

($customer = new Customer(['name' => 'Qiang',]))->save();
“。或者我需要创建自己的自定义ActiveRecord类吗?”


对于您的案例来说,这是一个很好的解决方案,但是每次从Gii生成模型时,您都不需要忘记更改父类,因为在现实世界中创建记录实际上更复杂,因为
save()
不能保证记录保存在数据库中。例如,验证可能无法通过,记录将不会保存,
save()
返回
false
。根据情况,在这种情况下,您可能希望抛出异常,也可能不抛出异常

我建议创建factory类并封装所有必要的条件、异常处理或默认值——从长远来看,它将更易于维护

$customer = Yii::$app->modelFactory->createCustomer(['name' => 'Qiang']);

在现实世界中创建记录实际上更复杂,因为
save()
不能保证记录保存在数据库中。例如,验证可能无法通过,记录将不会保存,
save()
返回
false
。根据情况,在这种情况下,您可能希望抛出异常,也可能不抛出异常

我建议创建factory类并封装所有必要的条件、异常处理或默认值——从长远来看,它将更易于维护

$customer = Yii::$app->modelFactory->createCustomer(['name' => 'Qiang']);

或者您可以调整Gii模板;)@尤皮克:是的,我也想写一写()啊,太好了!是的,至少稍微短一点。感谢您的快速回答和使用Gii管理这些问题的提示。或者您可以调整Gii模板;)@尤皮克:是的,我也想写一写()啊,太好了!是的,至少稍微短一点。感谢您的快速回答和使用Gii管理这些问题的提示。