1

ここで説明されているように、Doctrine2 の Sluggable 拡張機能をインストールする前に作成したエンティティのスラッグを再生成しようとしてます。 .

私が間違っていることは何ですか?

エンティティ:

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string", length=200)
 * @Assert\NotBlank()
 */
protected $name;

/**
 * @ORM\Column(type="text")
 * @Assert\NotBlank()
 */
protected $description;

...

/**
 * @Gedmo\Slug(fields={"name"})
 * @ORM\Column(length=200, unique=true)
 */
private $slug;

public function getSlug()
{
    return $this->slug;
}
public function setSlug($slug)
{
    $this->slug = $slug;

}
}

そして、私はこれを試します:

$repository = $this->getDoctrine()->getRepository('CommonBundle:Product');
$product = $repository->findOneBy(array("id"=>1));
$product->setSlug('');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();
4

1 に答える 1

1

わかった。私は何が起こっているのか知っています。Doctrine Extensions の古いバージョン、おそらくバージョン 2.1.0 を使用している可能性があります。Symfony 2.0.X が推奨されたバージョンであるため、これは Symfony 2.0.X で開発している場合に当てはまります。deps ファイルを確認してください。おそらく次のようなものがあります。

[gedmo-doctrine-extensions]
    git=http://github.com/l3pp4rd/DoctrineExtensions.git
    version=v2.1.0

これらの古いバージョンの拡張機能は、ドキュメントに記載されている動作をサポートしていません (空の場合はスラッグを再生成します)。拡張機能のバージョンをアップグレードする必要がありますが、Doctrine のバージョンを 2.2 にアップグレードする必要があるかもしれません。

于 2012-08-03T10:08:44.330 に答える