РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1226 of 1361 menu

Команда make:entity

Команда make:entity создаёт класс сущности Doctrine ORM. Сущность - это PHP-класс, связанный с таблицей базы данных. Команда запускается в интерактивном режиме: она последовательно спрашивает имя класса, имена и типы полей, а также связи с другими сущностями. После генерации класса команда автоматически создаёт репозиторий и добавляет маппинг в виде атрибутов #[ORM\Column].

Синтаксис

php bin/console make:entity [class] [--regenerate]

Первым параметром передаётся имя класса сущности, например Article. Если имя не указать, команда спросит его в интерактивном режиме. Флаг --regenerate заставляет команду заново сгенерировать существующий класс, а не дописывать поля в конец файла.

Пример

Давайте создадим сущность для статьи:

php bin/console make:entity Article

Команда попросит указать поля. Введём поле title типа string длиной 255, затем поле content типа text и поле createdAt типа datetime. После завершения ввода будет создан файл:

<?php namespace App\Entity; use App\Repository\ArticleRepository; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: ArticleRepository::class)] class Article { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $title = null; #[ORM\Column(type: Types::TEXT)] private ?string $content = null; #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; public function getId(): ?int { return $this->id; } public function getTitle(): ?string { return $this->title; } public function setTitle(string $title): static { $this->title = $title; return $this; } public function getContent(): ?string { return $this->content; } public function setContent(string $content): static { $this->content = $content; return $this; } public function getCreatedAt(): ?\DateTimeImmutable { return $this->createdAt; } public function setCreatedAt(\DateTimeImmutable $createdAt): static { $this->createdAt = $createdAt; return $this; } } ?>

Результат выполнения команды:

"created: src/Entity/Article.php" "created: src/Repository/ArticleRepository.php"

Пример

Давайте добавим в существующую сущность Article новое поле published типа boolean. Для этого снова запустим команду с именем класса:

php bin/console make:entity Article

Команда спросит имя нового поля и его тип. После ввода поля published типа boolean в класс будут дописаны свойство и методы доступа:

<?php namespace App\Entity; use App\Repository\ArticleRepository; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: ArticleRepository::class)] class Article { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $title = null; #[ORM\Column(type: Types::TEXT)] private ?string $content = null; #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; #[ORM\Column] private ?bool $published = null; public function getId(): ?int { return $this->id; } public function isPublished(): ?bool { return $this->published; } public function setPublished(bool $published): static { $this->published = $published; return $this; } } ?>

Результат выполнения команды:

"updated: src/Entity/Article.php"

Пример

Команда умеет создавать связи между сущностями. Давайте создадим сущность User и свяжем её с Article отношением многие-к-одному:

php bin/console make:entity User

Добавим поле name типа string, а затем поле articles типа relation. Команда спросит тип связи - выберем OneToMany и укажем целевую сущность Article. В классе User появится коллекция статей:

<?php namespace App\Entity; use App\Repository\UserRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: UserRepository::class)] class User { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $name = null; #[ORM\OneToMany(targetEntity: Article::class, mappedBy: 'author')] private Collection $articles; public function __construct() { $this->articles = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getName(): ?string { return $this->name; } public function setName(string $name): static { $this->name = $name; return $this; } public function getArticles(): Collection { return $this->articles; } public function addArticle(Article $article): static { if (!$this->articles->contains($article)) { $this->articles->add($article); $article->setAuthor($this); } return $this; } public function removeArticle(Article $article): static { if ($this->articles->removeElement($article)) { if ($article->getAuthor() === $this) { $article->setAuthor(null); } } return $this; } } ?>

Результат выполнения команды:

"created: src/Entity/User.php" "created: src/Repository/UserRepository.php" "updated: src/Entity/Article.php"

Смотрите также

  • команда make:migration,
    которая создаёт миграцию по изменениям сущностей
  • команда doctrine:schema:update,
    которая обновляет схему базы данных по сущностям
  • команда doctrine:database:create,
    которая создаёт базу данных
  • команда make:crud,
    которая генерирует CRUD-контроллер для сущности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить