Encoderast
@Encoderast
frontend пытается что-то делать в backend

Yii2 -> if / else в контроллере — как сделать?

Есть контроллер:

public function actionView($id){
        $category = Category::findOne($id);
        if(empty($category)){
            throw new \yii\web\HttpException(404, 'Такой категории нет');}

        if($category == '1'){
            $query = Product::find()->joinWith('size')->where(['hit' => '1'])->addOrderBy('id DESC');
        }
        if($category == '2'){
            $query = Product::find()->joinWith('size')->where(['sale' => '1'])->addOrderBy('id DESC');
        }
        if($category >= '3'){
            $query = Product::find()->joinWith('size')->where(['category_id' => $id])->addOrderBy('id DESC');
        }
        $pages = new Pagination(['totalCount' => $query->count(), 'pageSize' => 30, 'forcePageParam' => false, 'pageSizeParam' => false]);
        $products = $query->offset($pages->offset)->limit($pages->limit)->all();
        $this->setMeta($category->title, $category->keywords, $category->description);
        return $this->render('view', compact('products', 'pages', 'category'));
    }


Пытаюсь вывести на категорию 1 и 2 - товары "хиты" и "скидки" соответственно, но что то не получается с условием if, не понимаю почему не работает
  • Вопрос задан
  • 835 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
не работает потому что Category::findOne($id) возвращает объект. А Вы пытаетесь сравнить объект с строкой. Скорее всего Вам нужно обращаться к какому-то свойству объекта $category

P.S. так для размышления: код с подобными ифами говорит о проблемах в архитектуре
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы