Size: a a a

2021 January 26

DD

Den Den in symfony
Да, выбираю между этой либой и старым не обновляемым бандлом для симфони. Спс, присмотрюсь более к этой)
источник

D

Dmitry in symfony
конечно лучше старый необновляемый бандл, о чем речь :)
источник

СВ

Сергей Вершинин... in symfony
ну так там и бандл у них указан какой то..
https://github.com/odolbeau/phone-number-bundle
источник

DD

Den Den in symfony
это даже лучше, спасибо
источник

AK

Aleksei Kuznetsov in symfony
Привет!
Подскажите, пожалуйста, может кто сталкивался с таким:

У таблицы есть поле, которое в базе имеет тип smallint, но значения по факту только 0 и 1.
В сущности я хочу привести его сразу к boolean.

1. Если я пишу так:
/** @ORM\Column(type="smallint", name="example") */
private bool $isExample = false;

то при любом (!) вызове метода flush() доктрина пытается сохранить эту сущность, хотя ничего не менялось.

2. Если я пишу так:
/** @ORM\Column(type="boolean", name="example") */
private bool $isExample = false;

то при вызове изменении этого флага и попытке сохранения в бд падает ошибка:
SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for integer: "t"

3. Если же я пишу так:
/** @ORM\Column(type="smallint", name="example") */
private int $isExample = 0;

и в сеттере-геттере привожу к boolean то, логично, всё работает... но выглядит некрасиво.

Может я где-то что-то упускаю?
Или в моём случае поможет только кастомный тип?
источник

VM

Volodymyr Melko in symfony
type="boolean" сделай и все будет ок
источник

VS

Valentin Saik in symfony
Aleksei Kuznetsov
Привет!
Подскажите, пожалуйста, может кто сталкивался с таким:

У таблицы есть поле, которое в базе имеет тип smallint, но значения по факту только 0 и 1.
В сущности я хочу привести его сразу к boolean.

1. Если я пишу так:
/** @ORM\Column(type="smallint", name="example") */
private bool $isExample = false;

то при любом (!) вызове метода flush() доктрина пытается сохранить эту сущность, хотя ничего не менялось.

2. Если я пишу так:
/** @ORM\Column(type="boolean", name="example") */
private bool $isExample = false;

то при вызове изменении этого флага и попытке сохранения в бд падает ошибка:
SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for integer: "t"

3. Если же я пишу так:
/** @ORM\Column(type="smallint", name="example") */
private int $isExample = 0;

и в сеттере-геттере привожу к boolean то, логично, всё работает... но выглядит некрасиво.

Может я где-то что-то упускаю?
Или в моём случае поможет только кастомный тип?
Больше похоже что неправильно указали версию сервера бд, так как он пытается сохранить t/f а бд не поддерживает
источник

VS

Valentin Saik in symfony
Это я про 2й вариант естественно
источник

VS

Valentin Saik in symfony
Volodymyr Melko
type="boolean" сделай и все будет ок
А стоп, а чего поле интеджер? После изменения в ентити - миграции прогнали?
источник

S

SixthSense in symfony
а мне кажется во 2 варинте, когда поменяли значение на булеан вы не заапдейтили базу
источник

AK

Aleksei Kuznetsov in symfony
Я и не говорил, что базу менял)
Её не могу трогать
источник

AK

Aleksei Kuznetsov in symfony
Я лишь хотел обойтись средствами доктрины
источник

S

SixthSense in symfony
ее нужно не менять а заапдейтить
источник

S

SixthSense in symfony
ты тип поменял а база как была с смал интом так и осталась
источник

S

SixthSense in symfony
php bin/console doctrine:schema:update --force
источник

AK

Aleksei Kuznetsov in symfony
А cache:clear не очищает это?
источник

S

SixthSense in symfony
а как это связано
источник

S

SixthSense in symfony
как очистка кеша поменяет вам структуру базы
источник

S

SixthSense in symfony
вот и я не знаю
источник

AK

Aleksei Kuznetsov in symfony
Так, тогда я потерял мысль.

Вы предлагаете физически в базе изменить тип поля?
источник