Задать вопрос
@Muramidaza

Как сделать связь hasMany в Yii2 между разнородными полями?

Мне нужно сделать связь LEFT JOIN между таблицами

public function getRole()
    {
        return $this->hasMany(AuthAssignment::class, ['user_id' => 'id']);
    }

но дело в том что поле user_id - varchacter varying, а id - integer и я получаю ошибку

SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: integer = character varying

Как правильно прописать hasMany?
hasMany(AuthAssignment::class, ['user_id' => 'id::varchar'])
- не проходит
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • HTML Academy
    Бэкенд-разработчик для Addamant
    6 месяцев
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
nefone
@nefone
Junior PHP разработчик
Ошибка возникает из-за того, что база данных не может сравнить два разных типа данных.
Можно попробовать выполнить явное приведение типов в условии:
public function getRole()
{
    return $this->hasMany(AuthAssignment::class, ['user_id' => 'id'])
        ->onCondition(['user_id' => new \yii\db\Expression('CAST(id AS CHAR)')]);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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