3

对于帖子和主题,我有一个多对多的 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');
    }       
}
4

3 回答 3

4

像这样:

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

}))->where('id', $id)->first();
于 2013-11-02T19:25:52.127 回答
4

你应该这样做

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

或者

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

希望这有帮助

于 2015-12-25T04:59:01.197 回答
2

如果您想将Where子句应用于belongsToMany

这里是条件

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

在这个 URLgetRolePermissions中是模型函数,在它里面我使用了多对多关系

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

    }
于 2016-07-30T05:49:27.220 回答