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

  • Автор темы Автор темы webplus
  • Дата начала Дата начала

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');).
Если мне надо вставить в таблицу не все данные, а только цену и описание, а имя не надо, тогда как мне это сделать?
 
через phpMyAdmin вставляет без имени. А как сделать это в симфони я не знаю, если можете то помогите
 
Меня не интересует phpMyAdmin. Меня интересует, вставляет ли обычный mysql с помощью обычного INSERT без указания поля name?
 
Вот запрос:
Код:
INSERT INTO `product` (`price`, `description`, `cat_id`) VALUES ('11', 'тест', '4');
Он вставляет запись. в нем я name вообще не указываю потому что оно мне не надо. Также и в симфони хочу вставить без поля name
 
keltanas, чето странные вопросы ты задаешь:D
nullable=true поставь у тех свойств, которые могут быть пустыми.
И иди читай доки!
 
через phpMyAdmin, потом через консоль:
создал сущности:
php app/console doctrine:mapping:import AcmeTestBundle annotation
Для дополнения классов геттерами и сеттерами выполняем команду:
php app/console doctrine:generate:entities AcmeTestBundle
 
hell0w0rd, да у него походу схема модели с БД не синхронизирована. Иначе бы в БД этот name тоже был бы NOT NULL и INSERT не прошел. Т.е. он вообще не понимает, что делает ))
 
webplus, если ты не будешь читать доки, тебе будет очень и очень сложно.
http://symfony.com/doc/current/book/doctrine.html - вот прочти и желательно остальные части из the book. Если после прочтения этой статьи будут вопросы - давай попробуем решить.
 
через phpMyAdmin, потом через консоль
то, что для всяких yii нормально, для нормальных ORM - это уже реверсинженеринг.
Для доктрины сначала создаются сущности, потом генерируются миграции, потом миграции применяются к БД.
Если с миграциями сложно, то хотя бы апдейт схемы БД сделай из доктрины.

Тогда поймешь, что по твоим настройкам поле name не может иметь пустое значение
Прочти хотя бы это
 
keltanas, доктрина поддерживает "легкий переход" на саму доктрину, но когда это делаешь - надо понимать, что делаешь и как доктрина работает, хотябы поверхностно
 
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin, а затем из нее сущность. Таким способом не придется в сущности прописывать параметры каждой переменной. Или это считается плохим тоном?
 
  • Like
Реакции: AmdY
webplus, это такая новая религия, принято считать, что базы данных нет, а доктрина сама придумает на что мэпить данные. В первой я тоже всегда генерил данные из БД и вторая не возбраняет, но в симфони программисты трудолюбивые. для них не проблема написать тыщу лишних строк с анонтациями.

Но проблема скорее всего как и сказали @hell0w0rd и keltanas в null
И гораздо большая проблема, что ты поленился выложить текст ошибки, в которой всё написано.
 
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin, а затем из нее сущность. Таким способом не придется в сущности прописывать параметры каждой переменной. Или это считается плохим тоном?
Считается, что это позволит накатить обновления и изменения в схеме БД другими программистами или на боевом сервере одним вызовом консольного скрипта.
 
А почему нельзя сущность создавать из таблицы, так ведь удобнее создать таблицу через phpMyAdmin
Можно. Но, если работаешь в команде или на заказчика (как обычно и происходит), потрудись прописывать пошаговые инструкции о том, какие изменения через pma вносишь в базу. И как их откатить, если придется переключатся с ветки на ветку в репозитории.

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

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