Построитель запросов Yii 2.0 - выберите текст в виде столбца (без могилы, обратной галочки или обратной кавычки) - PullRequest
0 голосов
/ 10 октября 2019

Задавая вопрос, который я потратил последние 2 часа на траление в Интернете, чтобы найти и не смог найти решение, но в конце концов нашел решение, поэтому я опубликую ответ здесь для будущих пользователей.

Если я использую конструктор запросов Yii, но хочу установить столбец как строку предопределенного текста, а не сам столбец. Это происходит, когда вы используете одинарные кавычки в операторе выбора, так что это проблема как для моего формата даты, так и для столбца «Все сайты».

$query = Department::find()
  ->alias('d')
  ->select("user_name, count(department) as departments, DATE_FORMAT(join_date, '%Y-%m') as join_date 'All Sites'")
  ->createCommand()
  ->getRawSql();

Возвращает:

Select user_name, count(department) as departments, DATE_FORMAT(join_date, `'%Y-%m')` AS `join_date` `'All Sites'` 
from `department_table` `d`

Как мне избежать строки и регулярного выражения 'Все сайты', чтобы Yii не добавлял обратно кавычки

1 Ответ

0 голосов
/ 10 октября 2019

Решение этого заключается в следующем. Я обнаружил, что решение для моего date_format не работает для текстовой строки, поэтому я дал оба варианта выхода из вопроса обратной кавычки в случае, если любой из них поможет вам.

Обратите внимание, чтоЧтобы использовать Выражение , вам нужно будет включить:

use yii\db\Expression;
$query = Department::find()
            ->alias('d')
            ->select("user_name, count(department) as departments")
            ->addSelect(["DATE_FORMAT(join_date, '%Y-%m') as join_date"])
            ->addSelect(new Expression("'All sites'"))
            ->createCommand()
            ->getRawSql();

. Выводится следующий запрос:

Select  username, count(department) as department, DATE_FORMAT(join_date, '%Y-%m') as join_date, 'All Sites'
    FROM `department_table` `d` 
...