1

composer経由でFPNTagBundleをインストールしました。

        $tagArray=array('uno','due');
        $tagManager = $this->get('fpn_tag.tag_manager');
        $tagsObj = $tagManager->loadOrCreateTags($tagArray);
        $tagManager->replaceTags($tagsObj,$entity);
        $em->persist($entity);
        $em->flush();

タグの永続化を回避する次のエラーが表示されます。

「INSERT INTO Tag (name, slug, created_at, updated_at) VALUES (?, ?, ?, ?)」の実行中に、パラメーター {"1":null,"2":"uno","3": で例外が発生しました: null,"4":null}:

SQLSTATE [23000]: 整合性制約違反: 1048 列 'name' を null にすることはできません 500 内部サーバー エラー - DBALException

$tag = parent::createTag($name); の呼び出しに問題があるようです。TagManager.php の 35 行目

何か案は?v。

4

1 に答える 1

0

私のプロジェクトで同じ問題に遭遇しました。BaseTag問題は、Tag エンティティが( FPN\TagBundle\Entity\Tag) クラスのコンストラクターの実行を妨げていたことです。Tag クラスには独自のコンストラクターがあり、親のコンストラクターを呼び出さないと確信しています。これにより、エンティティに欠落している name 属性が設定されます。

親コンストラクターを呼び出して名前を設定するカスタム Tag クラスの例を次に示します。

use FPN\TagBundle\Entity\Tag as BaseTag;

class Tag extends BaseTag
{
    protected $tagging;
    public function __construct($name = null)
    {
        parent::__construct($name);
        $this->tagging = new ArrayCollection();
    }
}
于 2013-09-12T11:46:56.437 に答える