在Laravel Eloquent ORM中按模型过滤结果

时间:2014-04-08 10:57:14

标签: orm laravel eloquent

我正在使用Laravel 4构建简单的论坛。我需要计算当前用户在给定主题上撰写的帖子。

到目前为止我所拥有的:

$topic = Topic::find(1);
$user = Auth::user();
echo $user->posts()->whereTopicId($topic->id);

这很好用,但我对直接处理ID感到不满意。是否可以使用关系以整洁的方式完成它?

我正在寻找类似的东西:

echo $user->posts()->whereTopic($topic);

哪个不起作用。

1 个答案:

答案 0 :(得分:1)

您可以在$user->posts()->whereTopic($topic)模型中使用scopes来实现Post

public function scopeTopic($query, $topic)
{
    return $query->where('topic_id', '=', $topic->id);
}