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 !!!

Yii2da LEFT JOIN bilan alias qilib tanlashda muammo

+1 ovoz
146 marta ko‘rilgan
so‘radi 10 oktabr, 17 Erkin Pardayev (203 bal)

Assalomu alaykum, Yii2 da 2 ta jadvaldan LEFT JOIN qilib tanlaguncha muammo chiqayapti. Muammo shundaki 2 ta ustundan bir xil nomli ustunni tanlash kerak.

$featured = Article::find()
      ->select('gz_content.id, gz_content.title, gz_content.images,
       gz_content.created, gz_content.hits, gz_content.catid, gz_categories.title AS category')
      ->leftJoin('gz_categories', '`gz_content`.catid = `gz_categories`.id')
      ->where(['gz_content.featured' => 1, 'gz_content.language' => $lang, 'gz_content.state' => 1])
      ->limit(4)->orderBy('id DESC')->all();

Kodda ko'rib turganingizday gz_content va gz_categories jdavallarida bir xil title deb nomlangan ustunlar mavjud. Kategoriyalar jadvalidagi ustunni alias bilan tanlayman desam uni umuman ko'rmayapti agar "AS category"ni olib tashlasam natijadagi titleni qiymatini ustidan yozib yuborayapti. Shuni qanday qilib 2-jadvaldagi elementni alias bilan olsam bo'ladi?

izoh qoldirdi 10 oktabr, 17 Sardor Dushamov (1,683 bal)
gz_categories.title AS category   => shu joyidan AS ni olib tashlab ko'ringchi
izoh qoldirdi 10 oktabr, 17 Erkin Pardayev (203 bal)
ishlamadi, lekin AS ni o'rniga '=>' qo'yib ko'rganimda
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gz_categories.title =>' in 'field list'
The SQL being executed was: SELECT `gz_content`.`id`, `gz_content`.`title`, `gz_content`.`images`, `gz_content`.`created`, `gz_content`.`hits`, `gz_content`.`catid`, `gz_categories`.`title =>` AS `category` FROM `gz_content` LEFT JOIN `gz_categories` ON `gz_content`.catid = `gz_categories`.id WHERE (`gz_content`.`featured`=1) AND (`gz_content`.`language`='uz-UZ') AND (`gz_content`.`state`=1) ORDER BY `id` DESC LIMIT 4

Error Info: Array
(
    [0] => 42S22
    [1] => 1054
    [2] => Unknown column 'gz_categories.title =>' in 'field list'
)
 deb xatolik qaytarayapti
izoh qoldirdi 10 oktabr, 17 Sardor Dushamov (1,683 bal)
bu muammoyingiz relation bilan hal bo'lmadimi ? Yani relation bilan harakat qilib ko'rmadizmi
izoh qoldirdi 10 oktabr, 17 Erkin Pardayev (203 bal)
Model classga alias nomi bilan bir xil svoystva qo'shib qo'ysa ishlab ketarkan. Raxmat e'tiboringiz uchun
izoh qoldirdi 10 oktabr, 17 Sardor Dushamov (1,683 bal)
javob sifatida yozib qo'ysangiz qolganlarga ham foydasi tegib qolishi mumkin

2 Javoblar

+1 ovoz
javob berdi 11 oktabr, 17 SedBigDaddy (1,237 bal)

Yaxshisi Siz ActiveQuery ishlatin u ancha qulay bunaqa operatsiyalar uchun.

$featured = (new Query)->from('gz_content as con')->select(['con.id', 'con.title', 'co.images', 'con.created', 'con.hits', 'con.catid', 'cat.title AS category')
      ->leftJoin('gz_categories as cat', 'con.catid =cat.id')
      ->where(['con.featured' => 1])->andWhere(['con.language' => $lang])->andWhere(['con.state'=> 1])->limit(4)->orderBy('con.id DESC')->all();
izoh qoldirdi 11 oktabr, 17 SedBigDaddy (1,237 bal)
bu code, Misol uchun yaratilga o'zingizga to'girlab olarsiz
izoh qoldirdi 11 oktabr, 17 Erkin Pardayev (203 bal)
raxmat, bu safar shunga xarakat qilaman
0 ovoz
javob berdi 10 oktabr, 17 Erkin Pardayev (203 bal)

Model classga biz alias qilib olayotgan nomli svoysta e'lon qilishimiz kerak ekan.

class Article extends ActiveRecord
{
  public $category;

  public static function tableName()
  {
    return 'gz_content';
  }
}

Raxmat

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

...