私の記事実体にセッター注入を使用したいと思いますが、私はこれを初めて知り、それをあまりよく理解しません。実体にセッター依存性注入を使用する方法
私のエラーは、次のとおりです。
My\NewsBundle\Entity\Article
Fatal error: Call to a member function addArticle() on a non-object
これは私の記事のエンティティにここに起こる:
/** Inject service: search */
protected $search;
public function setSearch(Search $search)
{
$this->search = $search;
}
/** @ORM\PostPersist */
public function postPersist()
{
// wrong: does not have id yet for prePersist; changed to postPersist
//$search = new \My\NewsBundle\Entity\Search();
echo get_class($this->search);
$this->search->addArticle($this);
}
FYI:私のconfig.ymlがあります
# Parameters
parameters:
search.class: My\NewsBundle\Entity\Search
google.class: My\NewsBundle\Entity\Google
flickr.class: My\NewsBundle\Entity\Flickr
article.class: My\NewsBundle\Entity\Article
# Servers
services:
search:
class: %search.class%
google:
class: %google.class%
flickr:
class: %flickr.class%
article:
class: %article.class%
calls:
- [setSearch, [@search]]
をFYI:私はContainerAwareCommandを実行しており、フィードを消費しています。フィードエンティティからの抽出:
セッター注入の仕組みや自分のエンティティでのそのサービスの入手方法に関するアドバイスは大歓迎です。
私はあなたがあなたのコードの管理方法を見直す示唆しています。エンティティクラスは、(非常に基本的なセッター/ゲッター機能を管理するための)POPOであるように設計されています。あなたがやろうとしていることは、entityManager型のクラスにもっと適合します。 – Inoryy