Левое объединение в запросе выбора Yii2 - Неизвестный столбец «один» в «предложении» - PullRequest
0 голосов
/ 23 июня 2019

Почему этот запрос не работает?

public function actionInsert()
{
    $model = new NotificationsEvents();

    $date_at = (new Query())
        ->select(['single-events.date_at'])
        ->from('single-events')
        ->leftJoin('user', 'user.birthday = single-events.date_at');


    $event_id = (new Query())
        ->select(['single-events.id'])
        ->from('single-events')
        ->leftJoin('user', 'user.id = single-events.id');

    (new Query())->createCommand()->insert('notifications_events', [
        'type' => 7,
        'date_at' => $date_at,
        'event_id' => $event_id,
    ])->execute();

}

Мне нужно вставить день рождения пользователя в notifications_events.date_at и идентификатор пользователя в notifications_events.event_id, но этот код не работает:

Неизвестный столбец 'single' in 'в предложении'

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Еще один метод цитирования: с помощью backtics:

`single-events`
0 голосов
/ 23 июня 2019

single-events не является допустимым / безопасным именем для таблицы, поскольку оно содержит -.Вы должны либо цитировать его в каждом возможном месте:

public function actionInsert() {
    $model = new NotificationsEvents();

    $date_at = (new Query())
        ->select(['{{single-events}}.date_at'])
        ->from('single-events')
        ->leftJoin('user', 'user.birthday = {{single-events}}.date_at');


    $event_id = (new Query())
        ->select(['{{single-events}}.id'])
        ->from('single-events')
        ->leftJoin('user', 'user.id = {{single-events}}.id');

    (new Query())->createCommand()->insert('notifications_events', [
        'type' => 7,
        'date_at' => $date_at,
        'event_id' => $event_id,
    ])->execute();
}

, либо использовать более практичное имя для таблицы, например single_events.

...