Laravel:从多对多关系中选择条件

时间:2013-11-02 18:47:19

标签: laravel many-to-many

我对帖子和主题有多对多的laravel关系:

  • 帖子属于许多主题
  • 主题属于许多帖子

我希望获得 id>的帖子10 来自某个主题

以下代码将向我提供某些主题的所有帖子:

$topic = Topic::where('id',$topic_id)->get()->first();
$posts= $topic->post;

现在如何获取 id>的帖子10

型号:

class Topic extends Eloquent{

    public function post()
    {
     return $this->belongsToMany('post');
        }
    }

class Post extends Eloquent{

    public function topic()
    {
        return $this->belongsToMany('Topic');
    }       
}

3 个答案:

答案 0 :(得分:4)

像这样:

Topic::with(array('posts' => function($q)
{
    $q->where('id', '>', 10);

}))->where('id', $id)->first();

答案 1 :(得分:2)

如果您要将Where条款应用于belongsToMany

这是条件

$permissions = Role::with('getRolePermissions')->where('id', '=', Auth::guard('admin')->user()->id)->get()->toArray();

在此网址中getRolePermissions是模型函数,在其中我使用了多对多关系

public function getRolePermissions() {
        return $this->belongsToMany('App\Permission', 'permission_role');        

    }

答案 2 :(得分:1)

你应该这样做

$topic = Topic::find($topic_id);   
$posts= $topic->posts()->where('id','>',10)->get();  

$posts = Topic::find($topic_id)->posts()->where('id','>',10)->get(); 

希望这个帮助