Как победить malformed array literal (запрос к БД с колонкой типа ARRAY)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
i-programmer
Сообщения: 101
Зарегистрирован: 2015.08.24, 18:50

Как победить malformed array literal (запрос к БД с колонкой типа ARRAY)

Сообщение i-programmer »

Имеется Postgres 15.3. В таблице есть колонка user_ids с типом text[]

В запросе может прийти массив как с одним значением, так и несколькими. Когда пытаешься писать запрос вида

Код: Выделить всё

 $jobList = Job::find()->select('id')->where(['in', 'user_ids', $data]);
то появляется ошибка с текстом:

Код: Выделить всё

malformed array literal: \"BHNLIT42UUPM4OVE81SZG7VK\"\nDETAIL:  Array value must start with \"{\" or dimension information.\nCONTEXT:  
unnamed portal parameter $1 = '...'\nThe SQL being executed was: SELECT \"id\" FROM \"test\".\"job\" WHERE (0=1) AND (\"user_ids\" IN ('222', '111'))",
Как с помощью фреймворка и ActiveRecord составить запрос для выбора данных, где колонка с типом "массив" и из запроса прилетает массив? В модели rules:

Код: Выделить всё

public function rules(): array {
    return [
        ['user_ids', 'each', 'rule' => ['string']],
    ];
}
Ответить