我有三个实体,A
比如说B
和C
。A
拥有两个 ManyToOne 关系 toB
和 to C
。我想生成一个 slug A
,由 fieldA.a
和B.b
组成C.c
。A.a
目前,我可以使用and生成一个 slug 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;
//...
}
使用此代码,slugA.slug
类似于{{B.alias}}-{{A.name}}
. 我希望它是{{C.alias}}-{{B.alias}}-{{A.name}}
。我尝试SlugHander
在 的handlers
数组选项中添加另一个Gedmo\Slug
,但它忽略了第二个。我怎样才能做到这一点?