№14 Dars — Yiida HAS_MANY va BELONGS_TO dan foydalanish.

№14 Dars — Yiida HAS_MANY va BELONGS_TO dan foydalanish.

№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:

e2849614 dars yiida has many va belongs to dan foydalanish 65e61a5256c5f

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:

e2849614 dars yiida has many va belongs to dan foydalanish 65e61a52aece5

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:

e2849614 dars yiida has many va belongs to dan foydalanish 65e61a53105a7

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:

Web Dasturlash
№14 Dars — Yiida HAS_MANY va BELONGS_TO dan foydalanish.