Как запустить entity

197
19 декабря 2016, 19:37

Какая команда на выполнение, чтобы создалась таблица в базе?

И как описать поле datetime чтобы добавлялась функция NOW()

Answer 1

Если вы описываете сущность в .yml файлах, то вот несколько bash комманд:

Генерация сущностей (Entity.php)

$ ./app/console doctrine:generate:entities NameAppBundle

Генерация миграции

$ ./app/console doctrine:migrations:diff

Применение миграций

$ ./app/console doctrine:migrations:migrate

Для просмотра всех доступных команд с описанием

$ ./app/console

А для типа поля datetime я использую prePersist и/или preUpdate

Answer 2

Хочу обратить внимание при использования NOW() на следующие моменты:

  1. При использовании NOW() - приложение зависит от настроек даты/времени (а они могут запросто отличаться от настроек веб-сервера) сервера СУБД, про это можно легко забыть, ладно если это поле используется исключительно для внутренних целей приложения, а если это дата, например, бронирования и можно случайно забыть преобразовать дату к нужной временной зоне
  2. Когда значение по-умолчанию задается в конфиге для сущности, а не в конструкторе, то может случиться такая коллизия, что создан новый экземпляр сущности, который еще не сохранен в СУБД, а вы попытаетесь обратиться к такому полю, и сделать с ним что-то, и если не проверять значение на null (в случае даты), то можно получить ошибку, ведь поле еще не проинициализировано. Зачем в голове держать ту информацию?
  3. К чему я подвожу, на мой взгляд удобное место для задания значения по-умолчанию - это конструктор сущности, во-первых, легче понять и помнить какие значения по-умолчанию присваиваются полям, во-вторых такие поля уже будут проинициализированы при создании экземпляра класса, в третьих приложение зависит только от настроек веб-сервера (в части временной зоны)
  4. А если в приложении требуется особая логика, то как было отмечено выше, все значения можно инициализировать с помощью событий доктрины.
Answer 3

Вот Вам небольшой пример с оф.документации

use AppBundle\Entity\Product;
use Symfony\Component\HttpFoundation\Response;
// ...
public function createAction()
{
    $product = new Product();
    $product->setName('A Foo Bar');
    $product->setPrice('19.99');
    $product->setDescription('Lorem ipsum dolor');
    $em = $this->getDoctrine()->getManager();
    $em->persist($product);
    $em->flush();
    return new Response('Created product id '.$product->getId());
}
READ ALSO
Yii2 masked input

Yii2 masked input

Использую masked input yii2, поставил вот такое правило:

286
Загрузка картинок yii2

Загрузка картинок yii2

при загрузке картинок на сервер, если в совокупности у них большой весь, выходит

310
Invalid argument supplied for foreach() Беда прям

Invalid argument supplied for foreach() Беда прям

Работал скрипт работал и вдруг стал ругаться на вот эту строку foreach($rows as $row)Cам код :

189
Корзина в Codeignither

Корзина в Codeignither

Есть корзина на codeignitherИспользую стандартную библиотеку

172