Symfony Вставка не всех данных в таблицу

webplus

Новичок
Здравствуйте!
Вот код добавления в таблицу данных:
Код:
    $product = new Product();
  // $product->setName('A Foo Bar');
    $product->setPrice('190');
    $product->setDescription('Телевизор');

    $em = $this->getDoctrine()->getManager();
    $em->persist($product);
    $em->flush();
Он выдает ошибку потому что я закомментировал поле: (// $product->setName('A Foo Bar');).
Если мне надо вставить в таблицу не все данные, а только цену и описание, а имя не надо, тогда как мне это сделать?
 

webplus

Новичок
через phpMyAdmin вставляет без имени. А как сделать это в симфони я не знаю, если можете то помогите
 

keltanas

marty cats
Меня не интересует phpMyAdmin. Меня интересует, вставляет ли обычный mysql с помощью обычного INSERT без указания поля name?
 

webplus

Новичок
Вот запрос:
Код:
INSERT INTO `product` (`price`, `description`, `cat_id`) VALUES ('11', 'тест', '4');
Он вставляет запись. в нем я name вообще не указываю потому что оно мне не надо. Также и в симфони хочу вставить без поля name
 

hell0w0rd

Продвинутый новичок
keltanas, чето странные вопросы ты задаешь:D
nullable=true поставь у тех свойств, которые могут быть пустыми.
И иди читай доки!
 

webplus

Новичок
через phpMyAdmin, потом через консоль:
создал сущности:
php app/console doctrine:mapping:import AcmeTestBundle annotation
Для дополнения классов геттерами и сеттерами выполняем команду:
php app/console doctrine:generate:entities AcmeTestBundle
 

keltanas

marty cats
hell0w0rd, да у него походу схема модели с БД не синхронизирована. Иначе бы в БД этот name тоже был бы NOT NULL и INSERT не прошел. Т.е. он вообще не понимает, что делает ))
 

hell0w0rd

Продвинутый новичок
webplus, если ты не будешь читать доки, тебе будет очень и очень сложно.
http://symfony.com/doc/current/book/doctrine.html - вот прочти и желательно остальные части из the book. Если после прочтения этой статьи будут вопросы - давай попробуем решить.
 

keltanas

marty cats
через phpMyAdmin, потом через консоль
то, что для всяких yii нормально, для нормальных ORM - это уже реверсинженеринг.
Для доктрины сначала создаются сущности, потом генерируются миграции, потом миграции применяются к БД.
Если с миграциями сложно, то хотя бы апдейт схемы БД сделай из доктрины.

Тогда поймешь, что по твоим настройкам поле name не может иметь пустое значение
Прочти хотя бы это
 

hell0w0rd

Продвинутый новичок
keltanas, доктрина поддерживает "легкий переход" на саму доктрину, но когда это делаешь - надо понимать, что делаешь и как доктрина работает, хотябы поверхностно
 

webplus

Новичок
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin, а затем из нее сущность. Таким способом не придется в сущности прописывать параметры каждой переменной. Или это считается плохим тоном?
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
webplus, это такая новая религия, принято считать, что базы данных нет, а доктрина сама придумает на что мэпить данные. В первой я тоже всегда генерил данные из БД и вторая не возбраняет, но в симфони программисты трудолюбивые. для них не проблема написать тыщу лишних строк с анонтациями.

Но проблема скорее всего как и сказали @hell0w0rd и keltanas в null
И гораздо большая проблема, что ты поленился выложить текст ошибки, в которой всё написано.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin, а затем из нее сущность. Таким способом не придется в сущности прописывать параметры каждой переменной. Или это считается плохим тоном?
Считается, что это позволит накатить обновления и изменения в схеме БД другими программистами или на боевом сервере одним вызовом консольного скрипта.
 

keltanas

marty cats
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin
Можно. Но, если работаешь в команде или на заказчика (как обычно и происходит), потрудись прописывать пошаговые инструкции о том, какие изменения через pma вносишь в базу. И как их откатить, если придется переключатся с ветки на ветку в репозитории.

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

Проблему я уже решил nullable=true
Это не решение, а всего лишь костыль.
 
Сверху