如何从yii2查询打印转换后的SQL查询
我要打印查询:如何从yii2查询打印转换后的SQL查询,yii2,Yii2,我要打印查询: $demo = Demo::find()->all(); 我想查看已转换的SQL查询及其参数: createCommand()->getRawSql(); 正在向我显示错误消息: yii2对非对象上的成员函数createCommand()的调用 请帮助我查看实际的SQL查询。一个简单的方法是使用活动查询生成器createCommand方法 $sqlCommand = Demo::find()->createCommand(); echo $sqlC
$demo = Demo::find()->all();
我想查看已转换的SQL查询及其参数:
createCommand()->getRawSql();
正在向我显示错误消息:
yii2对非对象上的成员函数createCommand()的调用
请帮助我查看实际的SQL查询。一个简单的方法是使用活动查询生成器createCommand方法
$sqlCommand = Demo::find()->createCommand();
echo $sqlCommand->sql;
见此参考
和Hiii Paritosh,您可以通过
yii\db\Connection::createCommand()
等对象查看正在以SQl格式执行的查询
$query = new \yii\db\Query;
$query->select(['*'])
->from('table_demo');
$command = $query->createCommand();
// $command->sql returns the actual SQL
$rows = $command->sql;
echo $rows;
exit;
返回非实际sql的所有模型的数组
如果您想要sql,请使用此(这是超出的sql)
例如:
最简单的方法是选择一些不存在的字段,例如:
Demo::find()->select('nonExistingField')->all();
并查看如下调试消息:
The SQL being executed was: SELECT `nonExistingField` ...
这样,您就不需要删除->all()或->one()调用。最短的方法可能是:
echo Demo::find()->createCommand()->rawSql;
此问题已得到回答否链接中的queston和asnwer与此问题无关..它向我显示了一条错误消息“调用非对象上的成员函数createCommand()”请确保Demo::Find()是有效的对象。。而且你有权。。最终更新您的问题并显示您的代码。。在何处使用此语句是,Demo::find()->all();返回对象的数组。我在模型类的方法中使用这个查询,您不应该使用Demo::find()->all();但是Demo::find()->createCommand()。。如果要查看结果查询,必须将all()替换为createComman()。。Demo::find()->all();返回行模型对象,而不是检索此行的sql指令
Demo::find()->select('nonExistingField')->all();
The SQL being executed was: SELECT `nonExistingField` ...
echo Demo::find()->createCommand()->rawSql;