6

奇妙な問題があります。エラーメッセージは次のとおりです。

未定義のメソッドの呼び出しMyProject\BlogBundle\Entity\Blog::findOneById()

マッピングを設定し、エンティティクラスをコンソールを使用して作成し、データベースのスキーマを更新しました。この問題の原因は何ですか?

私はsymfony2を使用しています。行は次のとおりです。

$blogRepo = $this->get('myproject.blog.repository.blog');  
$blog = $blogRepo->findOneById($id);  

何か案は?

4

3 に答える 3

8

findOneByIdが存在しません、試してください

$ blogRepo-> findOneBy(array('id' => $ id));

ここで、「id」はエンティティの既存のフィールドです。

Doctrineのクラスドキュメントはここで確認できます:EntityRepository

編集:エンティティにフィールド「Id」がある限り、findOneByIdは存在するように見えます。ドキュメントを確認してください。それを指摘してくれたRyallにThx

于 2011-03-30T10:27:39.613 に答える
5

サービスの定義はmyproject.blog.repository.blog何ですか?にマッピングしているように見えますがMyProject\BlogBundle\Entity\Blog、実際にはそうあるべきですMyProject\BlogBundle\Entity\BlogRepository

独自のリポジトリクラスを作成する代わりに、EntityManagerによってその場で作成することもできます。

$user = $em->getRepository('MyProject\Domain\User')->find($id);

またはさらに短い:

$user = $em->find('MyProject\Domain\User', $id);

Doctrine2ORMドキュメントから取得。

于 2011-03-25T09:38:30.667 に答える
0

これを試して

$blogRepo = $this->getRepository('myproject.blog.repository.blog');  
$blog = $blogRepo->findOneById($id);  

getRepository

于 2017-06-28T19:17:14.060 に答える