За последние 24 часа нас посетили 22145 программистов и 991 робот. Сейчас ищут 656 программистов ...

Проблема с запросом SELECT CASE

Тема в разделе "Yii", создана пользователем bikerlex, 26 май 2017.

  1. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Пытаюсь получить данные из БД с немного измененными значениями.
    PHP:
    1. $locations = Location::find()->selectLocationType()->all();
    2.  
    3. public function selectLocationType()
    4. {
    5.    return $this->select([
    6.       'id',
    7.       'name',
    8.       new Expression(
    9. "CASE type
    10.           WHEN 1 THEN 'Страна'
    11.           WHEN 2 THEN 'ФО'
    12.           WHEN 3 THEN 'Регион'
    13.           WHEN 4 THEN 'Район'
    14.           WHEN 5 THEN 'Город'
    15.              END AS type"
    16.       ),
    17.    ]);
    18. }
    Эта конструкция формирует запрос:
    Код (Text):
    1. SELECT
    2.   `id`,
    3.   `name`,
    4.   CASE type
    5.      WHEN 1 THEN 'Страна'
    6.      WHEN 2 THEN 'ФО'
    7.      WHEN 3 THEN 'Регион'
    8.      WHEN 4 THEN 'Район'
    9.      WHEN 5 THEN 'Город'
    10.   END AS type
    11.   FROM `teh_location`
    Который, при тесте в клиенте MySQL, выводит то, что мне надо.

    Но при проверки в движке
    PHP:
    1. echo '<pre>'.print_r($locations,1).'</pre>'
    type везде 0.
    Не пойму в чем проблема, вроде всё правильно, но что-то не правильно.
     
  2. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    запрос вроде правильный... мне кажется надо в метод лезть и там дебагить, смотреть что он там делает..
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Ему уже ответили на форуме yii, но просто, чтоб тут тоже ответ был: yii приводит данные из БД к типу (int в данном случае)
     
  4. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Да, ответили, сделал.
    А всё это надо было лишь для того, чтобы в select были optgroup с типами.
    2017-05-26_15-59-21.png