Rumah > Soal Jawab > teks badan
$data = Model\Recipe::with(['ingredient', 'tags'])->find($recipeId);
if (empty($data)) {
return ResponseData::set($data);
}
$data->getInfoImage()->getListImage()->getPrice($locale);
return ResponseData::set($data);
Kod di atas mengandungi 13 pertanyaan pangkalan data. Walaupun setiap pertanyaan pada mesin ini sangat pantas, ia tidak dapat mengendalikan bilangan pertanyaan yang banyak.
Data asas adalah seperti berikut:
{
"SQL":"select * from `ak_recipe` where `ak_recipe`.`id` = ? and `ak_recipe`.`deleted_at` is null limit 1",
"bindings":[
"148"
],
"time":0.00037
},
{
"SQL":"select * from `ak_recipe_image` where `type` = ? and `recipe_id` = ? and `ak_recipe_image`.`deleted_at` is null limit 1",
"bindings":[
2,
148
],
"time":0.00046
},
{
"SQL":"select * from `ak_recipe_image` where `type` = ? and `recipe_id` = ? and `ak_recipe_image`.`deleted_at` is null limit 1",
"bindings":[
1,
148
],
"time":0.00035
},
// 。。。。
Jika pangkalan data ditukar daripada mesin tempatan ke intranet, data pelaksanaan setiap SQL pada asasnya akan berganda.
Data adalah seperti berikut:
{
"SQL":"select * from `ak_recipe` where `ak_recipe`.`id` = ? and `ak_recipe`.`deleted_at` is null limit 1",
"bindings":[
"148"
],
"time":0.00073
},
{
"SQL":"select * from `ak_recipe_image` where `type` = ? and `recipe_id` = ? and `ak_recipe_image`.`deleted_at` is null limit 1",
"bindings":[
2,
148
],
"time":0.00075
},
{
"SQL":"select * from `ak_recipe_image` where `type` = ? and `recipe_id` = ? and `ak_recipe_image`.`deleted_at` is null limit 1",
"bindings":[
1,
148
],
"time":0.00077
},
// 。。。。
Saya tertanya-tanya bagaimana semua orang mengendalikan pertanyaan perhubungan seperti ini? Adakah anda menulis sendiri JOIN
untuk menyemak kod? Atau adakah cara lain untuk menyelesaikan masalah ini?
ringa_lee2017-05-16 16:54:17
Kecekapan ORM agak perlahan Jika anda mencari prestasi terbaik, anda juga boleh mencuba menggunakan kelas DB secara terus
大家讲道理2017-05-16 16:54:17
Sepatutnya tidak ada keperluan untuk menulis SQL asli Selepas pengubahsuaian$data->getInfoImage()->getListImage()->getPrice($locale);
Saya melihat dokumentasi dan mendapati bahawa syarat tambahan untuk menentukan pertanyaan pramuat berkaitan adalah serupa dengan ini:
$users = App\User::with(['posts' => function ($query) {
$query->where('title', 'like', '%first%');
}])->get();
Pautan dokumentasi