Yii2. Yana parent_id da muammo

0 ovoz
81 marta ko‘rilgan
so‘radi 17 yanvar Farhodjon (1,013 bal)

Assalomu alaykum.

Men qialyotgan proektda db strukturasi quyidagicha:

id      name        parent_id
1       One         NULL
2       Two         NULL
3       Three       1
4       Four        1
5       Five        2
...

Shunda Modelda quyidagicha join bor:

public function getChild()
{
    return $this->hasMany(self::className(), ['id' => 'parent_id']);
}

Controllerda quyidagicha chaqirganimda:

$array = Model::find()->joinWith('child')->where(['parent_id' => null])->all();

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias:

shunaqa xatolik chiqyapti.

Men buni bartaraf etish uchun:

$array = Model::find()->where(['parent_id' => null])->all();

Shu so'rovni ishlatdim va View da:

foreach ($array as $item) {
    ...
    foreach ($item->child as $child) {
        ...
    }
}

kabi foydalandim. Bunda muammo yo'q barchasi to'g'ri ishlayapti, lekin join bo'lib bir query da kelmasdan har biri uchun alohida alohida query ishlayapti:

SELECT * FROM `tbl_name` WHERE `parent_id`=1
SELECT * FROM `tbl_name` WHERE `parent_id`=2

kabi. Shuni qanday bitta Joinda olsam bo'ladi? Yordam uchun rahmat.

izoh qoldirdi 24 yanvar Muxiddin (180 bal)
Ikkla table ham bir hil bolganligi uchun shunaqa xatolik berivoti, aliase ishlatish kere

1 ta javob

0 ovoz
javob berdi 01 may Dilshod (467 bal)
$array = Model::find()->joinWith('child as ch')->where(['parent_id' => null])->all();

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...