Lumen - pertanyaan hubungan laravel, akan ada sejumlah besar pertanyaan, bagaimana untuk menyelesaikannya?
为情所困
为情所困 2017-05-16 16:52:17
0
3
461
        $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?

为情所困
为情所困

membalas semua(3)
左手右手慢动作

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:

.
$users = App\User::with(['posts' => function ($query) {
    $query->where('title', 'like', '%first%');

}])->get();

Pautan dokumentasi

Peter_Zhu

Ganti ORM Fasih dengan fasad DB.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan