我从Laravel Collection获取特定部分数据时遇到问题。在我的应用程序中,我在用户和主题之间有以下关系:
User.php模型
public function topics() {
return $this->belongsToMany('Topic', 'stdr_user_topics', 'user_id', 'topic_id')->withTimestamps();
}
Topic.php模型
public function users() {
return $this->belongsToMany('User', 'stdr_user_topics','topic_id', 'user_id')->withTimestamps();
}
根据我的兴趣,我正在尝试获取属于经过身份验证的用户的特定主题部分:
if (Auth::check()) {
// Get topics for authenticated user
$userTopics = Auth::user()->topics;
if (count($userTopics)) {
$result = $userTopics
->where('name', '!=', '')
->sortByDesc('followers')
->skip($offset)
->take($limit);
} else {
$result = false;
}
}
上述代码应根据$offset
和$limit
获取有关用户主题的部分信息。然而,当跑步时,它会抛出这个:
调用未定义的方法 照亮\数据库\锋\收藏::跳过()
实现上述收藏所需的正确方法是什么?我正在使用Laravel 5。
答案 0 :(得分:2)
为什么不在上面的if
声明中移动您正在使用的这些条款,如:
$userTopics = Auth::user()->topics()->where('name', '!=', '')
->sortByDesc('followers')
->skip($offset)
->take($limit)
->get();
if ($userTopics->count()){
$result = $userTopics;
} else {
$result = false;
}
答案 1 :(得分:1)
为什么不使用Constraining Eager Loads?
也许你可以做类似
的事情Auth::user()->with(['topics' => function($query) use ($limit, $offset) {
$query->where('name', '!=', '');
$query->sortByDesc('followers');
$query->skip($offset);
$query->take($limit);
}])
请在此处阅读以获取更多信息:http://laravel.com/docs/5.1/eloquent-relationships#querying-relations
祝你好运!