№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:
Web Dasturlash
№14 Dars — Yiida HAS_MANY va BELONGS_TO dan foydalanish.