2

と の 3 つのエンティティがAありBますCAは とへの 2 つの ManyToOne 関係を所有しBていCます。フィールドとでA構成される のスラッグを生成したい。今のところ、次のコードでとを使用してスラッグを生成できます。A.aB.bC.cA.aB.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}}SlugHanderhandlers配列オプションに別のものを追加しようとしましGedmo\Slugたが、2番目のものは無視されました。どうすればそれを達成できますか?

4

1 に答える 1