Cómo obtener el último sql ejecutado en yii 2.0
Hay muchas maneras de hacer esto
1.yii proporciona el método "getRawSql". Por ejemplo, una consulta $query?=?User::find();
$query-gt; select(['nombre de usuario', 'edad'])-gt; =gt ;1)-gt; one();
echo?$query- gt; createCommand()-gt; getRawSql(); //generar declaración sql
2. Puede abrir el módulo de depuración de yii2. Esta función es muy poderosa. Puede consultar toda la información SQL de la página actual en él. Hay demasiadas configuraciones de este tipo en Internet. p>
3. Si busca un modelo que llame a métodos locales como User::updateAll, puede encontrar el código fuente del método updateAll a través del editor, encontrará el siguiente código
public?static?function?updateAll($atributos,? $ condición?=?'' ,? $params?=?[])
{
$comando?=?static ::getDb()-gt;createCommand();
$command-gt;update(static::tableName(),?$atributos,?$condición,?$params);
return?$command-gt;execute() ;
}
Continuar buscando el método de ejecución public?function?execute()
{
$sql?$this-gt; getSql();
$rawSql?=?$this-gt; getRawSql();
Yii:: info($rawSql,__METHOD__);
if($sql?==?'') ?{ return?0;
}
$this- gt; preparar(false);
$ token?=?$rawSql;
¿intentar?{
Yii::beginProfile($token,? __METHOD__) ;
$this-gt;pdoStatement- gt; ejecutar();
$n?=?$this-gt;pdoStatement-gt;rowCount();
Yii::endProfile($token,?__MTHOD__);
$this-gt;refreshTableSchema();
return?$n;
}?catch?(\Exception?$e)?{ p>
Yii:: endProfile($token, __METHOD__);
throw?$rawSql es la forma más nativa de ejecutar sql pull. La salida del punto de interrupción aquí está bien
Personal Se recomienda el segundo método, el método más eficiente. Consulte Baidu para conocer el método de configuración específico, ¡es muy simple!