t.me/atinfo_chat Telegram группа по автоматизации тестирования

Модуль Db в codeception и имена полей PostgreSQL / MySQL

Теги: #<Tag:0x00007f07fecfd520> #<Tag:0x00007f07fecfd200> #<Tag:0x00007f07fecfce40> #<Tag:0x00007f07fecfcc10>

Появилась необходимость в тестах получать из базы поле profileId, пакеты наши проходят сборку прогоняя тесты на всех версиях баз и php. Так вот чтобы получить profileId в PostgreSQL надо передавать это поле в двойных кавычках, чтобы буква I была в верхнем регистре, а вот MySQL 5.6 эти кавычки не понимает и метод
$i->grabFromDatabase($authTable, '"profileId"', ['login' => $login]);
возвращает мне ‘profileId’ вместо значения. Может кто сталкивался с такой проблемой и как-то её решил? Странно конечно что сам codeception когда пытается что-то получить из PostgreSQL не берёт имена полей в двойные кавычки. Или я не нашёл информацию как это сделать.

А двойные кавычки вы используете потому как в этой же таблице у вас есть еще одно поле с таким же названием profileid только буква i там в нижнем регистре?

Нет, двойные кавычки используются в запросах к PostgreSQL когда имена полей записаны в кэмелкейсе например. Без двойных кавычек postgresql воспринимает переданное имя полностью в нижнем регистре.

Все так, но если у вас поле в дб PostgreSQL уникально (а так скорей всего и есть) то какая разница в каком регистре обращаются тесты к бд, PostgreSQL понимает если к ней обратиться без 2х кавычек что за поле вам надо.

Не понимает, говорит что нет такого поля