Model_Orm::query()
またはModel_Orm::find()
から生成されたmysqlクエリ文字列をログ出力する方法はありますか?Fuel PHPのOrmクエリで生成されたSQLクエリを出力/ログする方法はありますか?
私は、私が期待している結果を与えていない複合体Orm::query()
を持っています。なぜ私は不思議に思っていますか?
Model_Orm::query()
またはModel_Orm::find()
から生成されたmysqlクエリ文字列をログ出力する方法はありますか?Fuel PHPのOrmクエリで生成されたSQLクエリを出力/ログする方法はありますか?
私は、私が期待している結果を与えていない複合体Orm::query()
を持っています。なぜ私は不思議に思っていますか?
を解決ホープデータベースを照会するのに使用されたことを意味します。
生産コードから取られた作業例:
$product = Model_Product::find('all', array(
'related' => array(
'i18ns',
),
'where' => array(
array('i18ns.variant_slug', $slug)
)
));
echo \DB::last_query();
exit;
SELECT `t0`.`family_id` AS `t0_c0`, `t0`.`type_id` AS `t0_c1`,
`t0`.`sort_weight` AS `t0_c2`, `t0`.`active` AS `t0_c3`,
`t0`.`attribute_set` AS `t0_c4`, `t0`.`created_at` AS `t0_c5`,
`t0`.`updated_at` AS `t0_c6`, `t0`.`site_id` AS `t0_c7`,
`t0`.`temporal_start` AS `t0_c8`, `t0`.`temporal_end` AS `t0_c9`,
`t0`.`id` AS `t0_c10`, `t1`.`id` AS `t1_c0`, `t1`.`product_id` AS `t1_c1`,
`t1`.`language_id` AS `t1_c2`, `t1`.`slug` AS `t1_c3`,
`t1`.`variant_slug` AS `t1_c4`, `t1`.`title` AS `t1_c5`,
`t1`.`description` AS `t1_c6`, `t1`.`temporal_start` AS `t1_c7`,
`t1`.`temporal_end` AS `t1_c8`
FROM `products` AS `t0`
LEFT JOIN `product_i18n` AS `t1`
ON (`t0`.`id` = `t1`.`product_id`)
WHERE `t1`.`variant_slug` = 'test-product'
これを実現する方法がいくつかあります。作成した複雑なクエリを印刷したいだけの場合は、get_query()を使用します。あなたのORMクエリークラスのメソッド。
以下は、クエリを出力するサンプルコードです。
$queryToExecute = Model_Article::query()
->select('author')
->where('date', '<', time())
->where('draft', '=', 1);
// This will print the query which is actually executed by your ORM
echo $queryToExecute->get_query();
あなたがあなたのクエリのパフォーマンスを分析する場合は、アプリケーションの設定で有効にすることによってDB profiler、 を使用する必要がありますあなたのクエリをログに記録し、
$queryString = $queryToExecute->get_query();
Log::info("Query that is executed {$queryString} ");
を実行したい場合。
は、私の上記の溶液は、クエリは、それは次のよう
\Model_Something::find('all');
\Model_Something::query()...
\DB::query()...
\DB::select()...
のいずれかのあなたが最後に何であったかを確認するには
echo \DB::last_query();
を使用することができることで実行さ何かを行った後、あなたの問題
、クエリを実行し、あなたが
echo \Database_Connection::instance(Model_Foo::$_connection)->last_query;
次のステートメントを使用することができます私の解決策を掲載しながら、私はこの方法を試してみましたが、didntのは、ORMのために働いていました質問、私はいくつかのことを逃したかどうかわからない、あなたはクエリの例で投稿することができます、私はちょうど学ぶために求めています。 –
あなたのために私の例を更新 –
それはORMでもうまくいきますが、おそらくあなたが見たいクエリが最後のクエリではないということでしょう。 – WanWizard