2017-12-18 9 views
1

アップロードする書籍を閲覧するためには、ユーザーがあなたに従うか、友人になる必要がある書籍アプリケーションを構築しています。 アプリケーションは、3つのエンティティの書籍、ユーザーおよびフォローアップで構成されています。ここ は、サンプル構造が、したがって、すべての彼らの本は、彼のプロフィールに表示されます2と3に上記illutrationユーザー1以下れる/友人からテーブルユーザーが従っている異なるユーザーのすべてのオブジェクトプロパティの一覧を取得する - symfony

id | followered_id | followed_id 
1 | 1    | 2 
2 | 1    | 3 
3 | 2    | 1 

に従ってくださいです。コントローラでは、私は試みを思い付くことができるが、私は彼が下記

$em = $this->getDoctrine()->getManager(); 

     $me = $this->getAuthedUser(1); 

     $follows = $em->getRepository("AppBundle:Follow")->findBy(["follower" => $me]); 
     $followeds = []; 
     foreach ($follows as $follow) { 
      $followeds[] = $follow->getFollowed(); 
     } 

     $followables = $em->getRepository("AppBundle:User")->findAll(); 



     return $this->render("@App/index.html.twig", [ 
      "me" => $me, 
      "followeds" => $followeds, //this 
      "followables" => $followables, 
     ]); 

をアップロードしたブックを表示するために、各ユーザーにクリックする必要があります下に上記のコントローラメソッド

<h1>Welcome, {{ me.username }}!</h1> 

     <h2>Your followed people:</h2> 
     {% if followeds is not empty %} 
      <ul> 
      {% for followed in followeds %} 
       <li>{{ followed.username }} (<a href="{{ path('profile', {user: followed.id}) }}">see his profile</a>)</li> 
      {% endfor %} 
      </ul> 
     {% else %} 
      you don't follow anyone yet. 
     {% endif %} 
の図です。

は、ここで次の宣言

/** 
    * @var User 
    * 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User") 
    */, Kindly help me to get out of this. 

および任意のさらなる情報が必要な場合は私に教えの実体スニペットです。前もって感謝します。 プライベート$フォロワー。

/** 
    * @var User 
    * 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User") 
    */ 
    private $followed; 

私の現在の課題は、私はそれをアップロードしたユーザーにクリックせずに続いています例えばbookname、出版社など、ユーザーによる出版のすべてのプロパティを見ることができるようにすることです。

答えて

0
{% for followed in followeds %} 
       <li> <!-- your followed profile link etc.--> </li> 
    {% if followed.books %} 
    <ul> 
     {% for book in followed.books %} 
      <li>{{ book.title }}</li> 
     {% endfor %} 
    <ul> 
    {% endif %} 
{% endfor %} 
+0

はどちらのプロパティ "ブック" も方法の一つ "図書()"、 "はgetBooks()"/"isbooks()" または "__call()" が存在し、クラス「プロキシでのパブリックアクセスを持っている\ __CG __ \ AppBundle \ Entity \ User "を選択します。 – Float

+0

コントローラでこれを行うことができず、ビューに渡されません – Float

+0

いいえ。だからあなたは本とユーザーの間には関係がありません。それらの間に多対多(または一対多)のドクトリン関係はありませんか? – ASOlivieri

関連する問題