为了更清楚地表达我的问题,我知道有 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]
INSERT INTO user
(firstName
, lastName
,...) VALUES ('John', 'Doe', ...)
这同样适用于 select 语句:
[yii\db\Command::query] SELECT * FROM
userWHERE
id=23
我希望框架应该创建准备好的语句并绑定(bind)参数。那会更快。
有没有办法强制它使用准备好的语句而不是普通的 SQL?
最佳答案
对于需要多次执行的复杂 SQL 语句,如 the docs 中所述这可能会提高性能。对于带有绑定(bind)参数的 SQL 语句,会自动调用此方法。
或者,您可以使用QueryBuilder生成查询。
关于php - 强制 Yii 2 在 ActiveRecord 模型保存上使用准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817035/