$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?
Kecekapan ORM agak perlahan Jika anda mencari prestasi terbaik, anda juga boleh mencuba menggunakan kelas DB secara terus
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:Pautan dokumentasi
Ganti ORM Fasih dengan fasad DB.