webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg

Почему получаю ошибку?

вот код:
$query = Product::find()->joinWith('salonProduct')->select([
            '*',
            new \yii\db\Expression('IF(salon_product.id IS NULL, 1, 0) AS salon_product_id')
        ]);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 24,
            ],
            'sort' => [
                'defaultOrder' => [
                    'salon_product_id' => SORT_ASC
                ]
            ],
        ]);

связь
public function getSalonProduct(){
        return $this->hasOne(SalonProduct::className(),['product_id'=>'id']);
    }

ошибка:
PHP Warning – yii\base\ErrorException
Invalid argument supplied for foreach() конкретно тут: foreach ($columns as $name => $dir)
public function getOrders($recalculate = false)
    {
        $attributeOrders = $this->getAttributeOrders($recalculate);
        $orders = [];
        foreach ($attributeOrders as $attribute => $direction) {
            $definition = $this->attributes[$attribute];
            $columns = $definition[$direction === SORT_ASC ? 'asc' : 'desc'];
            foreach ($columns as $name => $dir) {
                $orders[$name] = $dir;
            }
        }
 
        return $orders;
    }
  • Вопрос задан
  • 450 просмотров
Решения вопроса 1
webinar
@webinar Автор вопроса, куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
не могу понять что изменилось, но вот так работает:
$query = Product::find()->joinWith('salonProduct', true, 'LEFT JOIN')->orderBy('salon_product.id DESC');

По сути расписал default для joinWith.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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