dilikpulatov
@dilikpulatov
веб-программист

В Yii2 dbQuery join() как написать LIMIT?

Здравствуйте!
При получения данные из другой таблицы с помощью JOIN нужно забрать только один елемент
как это можно реализовать?
->join('LEFT JOIN', '(SELECT og.category, og.parent_id FROM order_goods AS og LIMIT 1)', 'o.id = og.parent_id')

или
->join('LEFT JOIN', 'order_goods AS og', 'og.parent_id = (SELECT ogg.parent_id, FROM order_goods AS ogg WHERE o.id = ogg.parent_id LIMIT 1)')

это я правильно написал?
  • Вопрос задан
  • 602 просмотра
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега MySQL
Web developer
Limit внутри join (только на одну таблицу) нельзя.

Опишите структуру обоих таблиц и что именно надо получить.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
делаете join через связь и указываете в связи лимит
Category model:
public function getProduct(){
return $this->hasMany(Product::classname,['cat_id'=>'id']);
}
public function getProductWithLimit(){
return $this->getProduct()->limit(1);
}

Где-то
$cat = Category::find()->joinWith('productWithLimit')->one();

Как вариант можно сделать связь с hasOne, а не hasMany что бы получить 1 объект, а не массив с одним объектом
public function getProductWithLimit(){
return $this->hasOne(Product::classname,['cat_id'=>'id']);
}

Может есть и более правильный вариант, но из Вашего вопроса не совсем понятно, что именно Вам надо и для чего.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы