@mShpakov

Как сделать join по json колонке?

Нужно:
Сделать поиск компаний где юзеры соответствуют определенным выражениям поиска. Юзеры связаны с компанией через json колонку пропертиз где хранится объект со свойством company_id
Делаю запрос так:
DB::table('companies')
->join('users', 'users.properties.company_id', '=', 'companies.company_id')
->select(['companies.company_id', 'companies.properties', 'companies.created_at', 'companies.updated_at'])
->get();

Но получаю в ответ:
SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "properties"
LINE 1: ...pdated_at" from "companies" inner join "users" on "users"."p...
^ (SQL: select "companies"."company_id", "companies"."properties", "companies"."created_at", "companies"."updated_at" from "companies" inner join "users" on "users"."properties"."company_id" = "companies"."company_id")

Где ошибка?
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
@mShpakov Автор вопроса
Пришлось заменить join на такой
->join('users', DB::raw('CAST("users"."properties" ->> \'company_id\' as integer)'), '=', 'companies.company_id')

Laravel почему-то не воспринемает нормально кастинги внутри джоина
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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