2017-01-19 1 views
1

の代わりに返され、私はこれを持っている:Symfony3文字列は、私のUserエンティティでは整数

/** 
* @ORM\Entity 
* @ORM\Table(name="users") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var \Doctrine\Common\Collections\ArrayCollection 
    * @ORM\OneToMany(targetEntity="Blog\BlogBundle\Entity \Entry",mappedBy="author") 
    */ 
    protected $entries; 

これは私の完全なエントリ・エンティティです。

このコードから、著者IDを取得しようとしていますが、著者名が返されています。私は最後に文字列に変換しているからです。私はそれを削除した場合、私はこのエラーを取得:symfony2 Catchable Fatal Error: Object of class could not be converted to string

リンクを取得するには、私は次のことをやっている:

内部 authorAction($id)をトリガーバンドルのrouting.ymlで idのパラメータでパス authorの設定
  • BookController。渡される整数が必要です。
  • authorAction($id)はDoctrine Managerを設定し、という著者がすべての書籍を返し、twigテンプレートをレンダリングするリポジトリにgetAllBooksByAuthor()という関数を呼び出します。
  • リンクはtwigテンプレートで生成されますが、渡されるパラメータは作者名です。これは整数ではなく文字列です。

著者名の代わりに著者IDが渡されるようにするにはどうすればよいですか?

私はここにこだわっており、文字列と整数の両方を扱えるようにするにはEntryエンティティが必要です。

+0

あなたの 'getAuthorId'メソッドは、idではなくUserエンティティオブジェクトを返します。たぶん 'return $ this-> author-> getId();' – JimL

+0

これは簡単です@JimL haha​​。 1日にSymfonyが多すぎます。ありがとう! – kamil1995b

答えて

0

具体的にこれは変更です:

/** 
* Get author ID 
* 
* @return intger 
*/ 
public function getAuthorId() 
{ 
    return $this->author->getId(); 
} 

注:@returnのドキュメントは、整数を返すのショーに変更する必要があります。

関連する問題