読み込みが終了しない場合は、しばらく待つか、リロードを行なってください。
If loading does not finish, wait for a while or reload.
エンジニア向けの情報を発信するブログです。
どなたでも発信できます。
お好きに利用していただれば幸いです。
<?php /** * @Entity * 👇これ * @Table(name="ecommerce_products",indexes={ * @Index(name="search_idx", columns={"name", "email"}) * }) */ class ECommerceProduct { }
bin/console doctrin:schema:update --force
📁 ec-cube/app/Customize/Entity/MyTrait.php <?php namespace Customize\Entity; use Doctrine\ORM\Mapping as ORM; use Eccube\Annotation\EntityExtension; /** * @EntityExtension("Eccube\Entity\ProductClass") */ trait MyTrait { /** * @var string * @ORM\Column("some_field", type="string") */ protected $someField; public function setSomeField(string $someField): self { $this->someField = $someField; return $this; } public function getSomeField(): string { return $this->someField; } }
📁 ec-cube/app/Customize/EventListener/MyEntityListener.php <?php namespace Customize\EventListener; use Customize\Entity\MyTrait; use Doctrine\Common\EventSubscriber; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; class MyEntityListener implements EventSubscriber { public function getSubscribedEvents() { return [ 'loadClassMetadata', ]; } public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $cm = $eventArgs->getClassMetadata(); $class = $cm->getName(); $uses = class_uses($class);// 👈 traitを作成している場合、この$usesに作成したtraitのpath?が入ってくる if (in_array(MyTrait::class, $uses)) { $cm->table['indexes'][] = [// 👈 これでインデックスを追加することができる 'columns' => [ 'some_field', ], ]; } } }
bin/console doctrin:schema:update --force