我正在构建一个书籍应用程序,供用户查看您上传的书籍,他/她必须关注您或成为您的朋友。 该应用程序由3个实体书籍,用户和关注组成。 这是一个示例结构Follow table
id | followered_id | followed_id
1 | 1 | 2
2 | 1 | 3
3 | 2 | 1
从上面的illutration用户1跟随/朋友到2和3.所以他们所有的书应该出现在他的个人资料中。在下面的控制器中,我能够尝试,但我必须点击每个用户才能查看他上传的图书
$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;
我目前的挑战是能够查看用户发布的书籍的所有属性,例如我所关注的书名,发布商等,而不点击上传它的用户。
答案 0 :(得分: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 %}