获取关注者 laravel 的帖子
Posted
技术标签:
【中文标题】获取关注者 laravel 的帖子【英文标题】:Get posts by followers laravel 【发布时间】:2015-04-23 13:30:04 【问题描述】:我想为经过身份验证的用户显示一个提要页面,该页面显示他们关注的用户的最新帖子。我已经设置了一个跟随系统,其中包含以下内容:
标签:
帖子 用户 关注用户模型:
public function follow()
return $this->BelongsToMany( 'User', 'Follow' ,'follow_user', 'user_id');
饲料控制器:
public function feed ()
$user = (Auth::user());
return View::make('profile.feed')->with('user',$user);
Feed.blade
@foreach ($user->follow as $follow)
@foreach ($follow->posts as $post)
//* post data here.
@endforeach
@endforeach
这是从用户关注的用户那里获取帖子,但是我有一个问题。 foreach 每次都返回一个用户,然后是他们的帖子。
它现在在做什么:
关注用户 1
发布 1 发布 2 发布 3 等关注用户 2
发布 1 发布 2 发布 3 等我想展示的内容:
已关注用户 1 条帖子 1 已关注用户 2 发布 1 已关注用户 2 发布 2 关注的用户 1 发布 2 等等等等有什么想法吗?
【问题讨论】:
在您的模型上,您是如何建立关系的?看看hasManyThrough,它可能正是你所需要的。 【参考方案1】:<?php
/**
* Get feed for the provided user
* that means, only show the posts from the users that the current user follows.
*
* @param User $user The user that you're trying get the feed to
* @return \Illuminate\Database\Query\Builder The latest posts
*/
public function getFeed(User $user)
$userIds = $user->following()->lists('user_id');
$userIds[] = $user->id;
return \Post::whereIn('user_id', $userIds)->latest()->get();
首先,您需要获取当前用户关注的用户及其ids
,以便将其存储在$userIds
中。
其次,您需要提要也包含您的帖子,因此您也将其添加到数组中。
第三,您返回该帖子的poster
或author
在我们从第一步获得的数组中的帖子。
然后将它们从最新到最旧的顺序存储起来。
欢迎提出任何问题!
【讨论】:
感谢您的回复!这似乎有效,但是我只是在视图中获取我的数据: ["id":118696,"category_id":"win","user":56031,"username": 等等。我该如何返回数据是否正确显示在我的视图中? 该函数应该在您的模型或存储库中。然后你从你的控制器调用那个函数,把它存储在某个变量中,然后通过你的View::make()
函数传递它。
如果对您有帮助,请投票支持该答案。 ;)
感谢您迄今为止的帮助 :) 我很难从控制器调用该函数,您能帮忙吗?
什么都没有,因为我收到此错误:已达到“100”的最大函数嵌套级别,正在中止!【参考方案2】:
只是对 Akar 的回答的更正:
对于那些在 2020 年来到这里的人,您必须使用 pluck
而不是 lists
。它在新版本的 laravel 中发生了变化。
public function getFeed(User $user)
$userIds = $user->following()->pluck('user_id');
$userIds[] = $user->id;
return \Post::whereIn('user_id', $userIds)->latest()->get();
【讨论】:
以上是关于获取关注者 laravel 的帖子的主要内容,如果未能解决你的问题,请参考以下文章