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

Yii2 -> как достать id категорий в контроллере?

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

$categorys = Category::find()->where(['parent_id' => $id, 'status' => '1'])->all();
        
        $categorys1 = $categorys->id;
        
        $query = Product::find()->where(['category_id' => $id, 'status' => '1'])->andWhere(['category_id' => $categorys1])->addOrderBy('id DESC');


Проблема в $categorys1 = $categorys->id;

Если ставлю $categorys1 = ['38', '43'] - 38 и 43 - это id, которые должен получить из запроса к модели Category

В результате эти id (38 и 43) должны придти в andWhere(['category_id' => $categorys1])

Если стоят 38 и 43 - функция выполняется, товары достаются из БД, а если пытаюсь достать через
$categorys = Category::find()->where(['parent_id' => $id, 'status' => '1'])->all();
- не отдает

Хелп!!!
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@Arik
1. all() должен вернуть массив, а вы к нему как к объекту?
2. вы делаете запрос к продуктам "category_id = $id AND category_id = $id2", что естественно ничего не вернет.
3. выходит нужно сделать IN(), как-то так было:
->where(['status' => '1'])->andWhere(['in', 'category_id', $categoryIds])

$categoryIds - массив из нужных id-категорий
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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