と の 3 つのエンティティがA
ありB
ますC
。A
は とへの 2 つの ManyToOne 関係を所有しB
ていC
ます。フィールドとでA
構成される のスラッグを生成したい。今のところ、次のコードでとを使用してスラッグを生成できます。A.a
B.b
C.c
A.a
B.b
クラスA:
<?php
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(
* repositoryClass="AppBundle\Repository\ARepository"
* )
*/
class A
{
/**
* @var integer
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
/**
* @var string
* @ORM\Column(type="string")
*/
private $name;
/**
* @var B
* @ORM\ManyToOne(targetEntity="B")
*/
private $b;
/**
* @var C
* @ORM\ManyToOne(targetEntity="C")
*/
private $c;
/**
* @var string
* @ORM\Column(type="string", unique=true)
* @Gedmo\Slug(handlers={
* @Gedmo\SlugHandler(class="Gedmo\Sluggable\Handler\RelativeSlugHandler", options={
* @Gedmo\SlugHandlerOption(name="relationField", value="name"),
* @Gedmo\SlugHandlerOption(name="relationSlugField", value="alias"),
* @Gedmo\SlugHandlerOption(name="separator", value="-")
* })
* }, separator="-", updatable=true, fields={"name"})
*/
private $slug;
// ...
}
クラス B :
<?php
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(
* repositoryClass="AppBundle\Repository\BRepository"
* )
*/
class B
{
/**
* @var integer
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
/**
* @var string
* @ORM\Column(type="string")
*/
private $name;
/**
* @var string
* @ORM\Column(type="string")
* @Gedmo\Slug(handlers={
* @Gedmo\SlugHandler(class="Gedmo\Sluggable\Handler\InversedRelativeSlugHandler", options={
* @Gedmo\SlugHandlerOption(name="relationClass", value="AppBundle\Entity\A"),
* @Gedmo\SlugHandlerOption(name="mappedBy", value="b"),
* @Gedmo\SlugHandlerOption(name="inverseSlugField", value="slug")
* })
* }, fields={"name"})
*/
private $alias;
//...
}
このコードでは、スラッグA.slug
は次のようになり{{B.alias}}-{{A.name}}
ます。であってほしい{{C.alias}}-{{B.alias}}-{{A.name}}
。SlugHander
のhandlers
配列オプションに別のものを追加しようとしましGedmo\Slug
たが、2番目のものは無視されました。どうすればそれを達成できますか?