Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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

sql
database
codeception
php
Теги: #<Tag:0x00007fedbbd15668> #<Tag:0x00007fedbbd15500> #<Tag:0x00007fedbbd15398> #<Tag:0x00007fedbbd151e0>

(Евгений Голов) #1

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


#2

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


(Евгений Голов) #3

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


#4

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


(Евгений Голов) #5

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