• Kalit so’zlar
  • Qurilish sorovlari
  • 22-ma’ruza. Yii2 freymvorkda veb ilovalarni ishlab chiqish asoslari. Yii2 da so’rovlarni qayta ishlash




    Download 106.5 Kb.
    bet1/5
    Sana29.05.2023
    Hajmi106.5 Kb.
    #66393
      1   2   3   4   5
    Bog'liq
    22-ma’ruza
    713-714 20 mustaqil ish mavzulari (1)

    22-ma’ruza. YII2 freymvorkda veb ilovalarni ishlab chiqish asoslari. YII2 da so’rovlarni qayta ishlash.


    Reja:

    1. YII2 freymvorkda veb ilovalarni ishlab chiqish asoslari.

    2. YII2 da so’rovlarni qayta ishlash. URL bilan ishlash.

    Kalit so’zlar: SQL SELECT, select(), from(), Prefikslar
    DAO ustiga qurilgan so'rovlar yaratuvchisi dasturlashtiriladigan va DBMSdan mustaqil ravishda SQL iboralarini qurish imkonini beradi. Sof SQL iboralarini yozish bilan solishtirganda, quruvchidan foydalanish ko'proq o'qilishi mumkin bo'lgan SQL bilan bog'liq kod yozishga va xavfsizroq SQL bayonotlarini yaratishga yordam beradi.
    So'rovlar yaratuvchisidan foydalanish odatda ikki bosqichni o'z ichiga oladi:

    1. SQL SELECT operatorining turli qismlarini (masalan, , ) ifodalovchi yii\db\Query ob'ektini yarating .SELECTFROM

    2. Ma'lumotlar bazasidan ma'lumotlarni olish uchun yii\db\Query usuli (masalan, ) yordamida so'rovni bajaring .all()

    Quyidagi kod so'rovlar yaratuvchisidan umumiy foydalanishni ko'rsatadi:
    $rows = (new \yii\db\Query())
    ->select(['id', 'email'])
    ->from('user')
    ->where(['last_name' => 'Smith'])
    ->limit(10)
    ->all();
    Yuqoridagi kod quyidagi SQL iborasini yaratadi va bajaradi, bu erda parametr :last_namestring bilan bog'langan 'Smith'.
    SELECT `id`, `email`
    FROM `user`
    WHERE `last_name` = :last_name
    LIMIT 10
    Ma'lumot: Asosan yii\db\QueryBuilder o'rniga yii\db\Query bilan ishlaysiz . So'rov usullaridan biri chaqirilganda, ikkinchisi bilvosita chaqiriladi. yii\db\QueryBuilder - DBMS-dan mustaqil yii\db\Query ob'ektlaridan DBMSga xos SQL ifodalarini (masalan, jadval/ustun nomlaridan qochish) yaratish uchun mas'ul bo'lgan sinf .
    Qurilish so'rovlari
    Yii\db\Query ob'ektini yaratganingizdan so'ng, SQL bayonotining turli qismlarini yaratish uchun turli usullarni chaqirishingiz mumkin. Usul nomlari SQL so'rovining mos keladigan qismlarida qo'llaniladigan SQL kalit so'zlarini eslatadi. Misol uchun, so'rovning bir qismini belgilash uchun siz from()FROM usulini chaqirishingiz kerak . Barcha so'rovlar yaratish usullari o'z ob'ektini qaytaradi, bu sizga bir nechta qo'ng'iroqlarni zanjirlash imkonini beradi.
    Quyida har bir so'rovni yaratish usulining tavsifi keltirilgan.
    select()
    Select()SELECT usuli SQL so'rovining bir qismini belgilaydi . Siz tanlanadigan ustunlarni belgilashingiz mumkin, ular massiv yoki satr sifatida ko'rsatilishi kerak. SQL so'rovi yii\db\Query ob'ektidan yaratilganda, ustun nomlari avtomatik ravishda o'chiriladi .
    $query->select(['id', 'email']);

    // эквивалентно:

    $query->select('id, email');
    Ustun nomlari jadval prefikslari va/yoki ustun taxalluslari bilan birga tanlanishi mumkin, xuddi oddiy SQL bayonotini yozishda bo'lgani kabi. Masalan,
    $query->select(['user.id AS user_id', 'email']);

    // эквивалентно:

    $query->select('user.id AS user_id, email');
    Agar siz ustunlarni belgilash uchun massiv formatidan foydalansangiz, ustun taxalluslarini belgilash uchun massiv kalitlarini ham belgilashingiz mumkin. Masalan, yuqoridagi kodni qayta yozish mumkin:
    $query->select(['user_id' => 'user.id', 'email']);
    Agar siz so'rovni yaratishda select() usulini chaqirmasangiz, barcha ustunlarni *tanlang degan ma'noni anglatadi .
    Ustun nomlaridan tashqari siz SQL iboralaridan ham foydalanishingiz mumkin. Noto'g'ri avtomatik qochishning oldini olish uchun vergulni o'z ichiga olgan iboralarni ishlatish uchun massiv formatidan foydalanishingiz kerak. Masalan,
    $query->select(["CONCAT(first_name, ' ', last_name) AS full_name", 'email']);
    2.0.1 versiyasidan boshlab siz quyi so'rovlardan ham foydalanishingiz mumkin. Ifodada har bir quyi so'rovni yii\db\Query ob'ekti sifatida ko'rsatishingiz kerak . Masalan,
    $subQuery = (new Query())->select('COUNT(*)')->from('user');

    // SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`


    $query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
    Muayyan qatorlarni tanlash uchun distinct() usulini chaqirishingiz mumkin :
    // SELECT DISTINCT `user_id` ...
    $query->select('user_id')->distinct();
    Maydonlarni qo'shish uchun addSelect() ga qo'ng'iroq qilishingiz mumkin . Masalan,
    $query->select(['id', 'username'])
    ->addSelect(['email']);
    from()
    from()FROM usuli SQL so'rovining bir qismini belgilaydi . Masalan,
    // SELECT * FROM `user`
    $query->from('user');
    Jadval nomlarini satr yoki massiv sifatida belgilashingiz mumkin. Jadval nomlarida sxema prefiksi va/yoki jadval taxalluslari bo'lishi mumkin, xuddi oddiy SQL bayonotini yozishda bo'lgani kabi. Masalan,
    $query->from(['public.user u', 'public.post p']);

    // эквивалентно:

    $query->from('public.user u, public.post p');
    Agar siz massiv formatidan foydalansangiz, taxalluslarni belgilash uchun massiv tugmalaridan foydalanishingiz mumkin:
    $query->from(['u' => 'public.user', 'p' => 'public.post']);
    Jadval nomlaridan tashqari, xuddi select dagi kabi yii\db\Query ob'ekti ko'rinishida quyi so'rovlarni belgilashingiz mumkin .
    $subQuery = (new Query())->select('id')->from('user')->where('status=1');

    // SELECT * FROM (SELECT `id` FROM `user` WHERE status=1) u


    $query->from(['u' => $subQuery]);

    Download 106.5 Kb.
      1   2   3   4   5




    Download 106.5 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    22-ma’ruza. Yii2 freymvorkda veb ilovalarni ishlab chiqish asoslari. Yii2 da so’rovlarni qayta ishlash

    Download 106.5 Kb.