强制 Yii 2 在 ActiveRecord 模型保存中使用预准备语句


Forcing Yii 2 to use prepared statements on ActiveRecord model save

为了更清楚地回答我的问题,我知道有yii''db''Command和bindValue()和bindParam()方法,但我正在寻找让ActiveRecord自己完成的可能性。我不想手动编写所有查询,而是使用内置函数。

class User extends 'yii'db'ActiveRecord{
      public static function tableName(){
          return 'user';
      }
      public function rules(){ ... }
}
...
$user= new User();
$user->firstName='John';
$user->lastName='Doe';
$user->save();

当我查看调用 $model->save() 后正在执行的 SQL 时,我看到普通的 SQL 语句,例如 [yii'db'Command::execute] 插入 INTO userfirstNamelastName ,...)价值观("约翰"、"母鹿"等)

这同样适用于选择语句:[yii''db''Command::query] SELECT * FROM用户WHERE ID =23

我希望该框架应该创建准备好的语句并绑定参数。那会更快。

有没有办法强制它制作预准备语句而不是纯 SQL?

对于要多次执行的复杂 SQL 语句,如文档中所述,这可能会提高性能。对于具有绑定参数的 SQL语句,将自动调用此方法。

或者,您可以使用 QueryBuilder 生成查询。