№14 Dars - Yiida HAS_MANY va BELONGS_TO dan foydalanish.

Yii ning bog`lanishlari bu umumiy web ilovalarimizda muhim ro`l bo`lib xizmat qiladi. Bu relation metodi Yii ning model qismida joylashgan. Biz hozirda siz bilan HAS_MANY va BELONGS_TO usullari bilan tanishib chiqamiz. Nega aynan bular? Chunki bular web ilovamizda asosiy qatnashuvchi bo`lib xizmat qiladi. Boshqa usullarni ham o`ziga yarasha tutgan o`rni bor albatta lekin bu ikkala usul ayni ko`p uchraydigan usullardan. Buni batafsil tanishish chog`ida anglab yetasiz.

Masalaning qo`yilishi: Bizga ikkita jadval berilgan shularni o`zaro BELONGS_TO va HAS_MANY bog`lanishlarni amalga oshirish.

Masalani yechilishi: Bizga quyidagicha ikkita jadval berilgan:


Bu yaratilgan jadvallarga mos model yaratishimiz kerak bo`ladi.

Birinchi usuldan foydalanish: BELONGS_TO

Bu usulni biz kod tarzda "davlat" modeliga kiritamiz:

public function relations()
    {
        return array(
            'qitaType'=>array(self::BELONGS_TO, 'Qita', 'qita_ID'),
        );
    }

bu yerda:

' qitaType' - bog`lanish nomi,

BELONGS_TO - bog`lanish usuli,

' Qita' - bog`laniladigan jadval nomi,

' qita_ID' - bog`lanish kaliti

Agar biz controllerimizga quyidagicha kod kiritsak:

$id = 2;
$model = Davlat::model()->findByPk($id);
echo $model->qitaType->qita_name;

bizga OSIYO degan natija chiqadi. Bu yerda Davlat jadvalidagi ID ustuni 2 ga teng bo`lgan barcha satrni object ko`rinishida qaytaradi. Bu yerda ID si 2 ga teng bo`lgan davlatning qaysi qitaga tegishliligi olinmoqda.

SQL dagi ko`rinishi:

select qita_name from davlat inner join qita on davlat.qita_ID = qita.ID where davlat.ID = 2;

Ishlash usuli:

Endi ikkinchi usuldan foydalanish: HAS_MANY

Bu usulni biz kod tarzda "qita" modeliga kiritamiz:

public function relations()
           {
               return array(
                    'davlatlar'=>array(self::HAS_MANY, 'Davlat', 'qita_ID'),
               );
           }

Agar biz controllerimizga quyidagicha kod kiritsak:

$name = 'OSIYO';
$model = Qita::model()->findByAttributes(array('qita_name'=>$name));
foreach($model->davlatlar as $davlat)
        echo $davlat->davlat_name."
";

bizga Uzbekiston va Yaponiya degan natijalar chiqadi. Bu yerda Qita jadvalidagi qita_name ustuni 'OSIYO' ga teng bo`lgan barcha satrni object ko`rinishida qaytaradi.

SQL dagi ko`rinishi:

select davlat_name from davlat inner join qita on davlat.qita_ID = qita.ID where qita.qita_name = 'OSIYO' 

Ishlash usuli:


Misollar ko`rinishida ko`rsatishga harakat qildik. Qo`llab ko`ring. Chunki baribir amaliyot kerak. Ishlash usuli juda oddiy. Keyingi darslarimizda 'MANY_MANY', 'HAS_ONE' va 'STAT' kabi usullarni xam ko`rsatishga xarakat qilamiz.

Manba:


JONNY

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript. O'zbekistonni rivojlantiramiz! Dasturlash orqali vatanimizni yangi marralarga olib chiqamiz.


Blogdagi so‘nggi maqolalar:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!