yii2-这对执行查询有任何影响吗?如果是的话



我将在yii2中的查询下执行。

$result = MyModel::find()->where(['res_model'=>$res_model])->all();

上述查询与一个查询之间有什么区别:

$result = MyModel::find()->where( 'res_model = :res_model',[
                    ':res_model' => $res_model] )->all();

既可以正常工作,但在性能和可用性上都令人困惑。谁能澄清这些?

将执行相同的查询。
如果您有几个键=值条件,则第一版很有用。
如果您需要进行更复杂的查询,则可以使用第二版。像这样的东西

$result = MyModel::find()->where('some_field = (select max(date) from another_table where another_field=:param)',['param' => $param])->all();

性能和安全性相同。

对于sql/mysql,这些都是相同的(查询都返回相同的代码)

区别是您分配过滤器值的方式。

  $result = MyModel::find()->where(['res_model'=>$res_model])->all();

在第二个值中,该值的分配是基于param tecnique而不是直接

的。
  $result = MyModel::find()->where( 'res_model = :res_model',[
                ':res_model' => $res_model] )->all();

相关内容

最新更新