2017-09-25 84 views
0

当我尝试TI在我的模型中使用全局范围:错误与GlobalScope在Laravel 5.4

protected static function boot() 
{ 
    parent::boot(); 
    static::addGlobalScope(new PostScope(Post::TYPE_VIDEO)); 
    static::addGlobalScope('video', function (Builder $builder) { 
     $builder->join('video_posts', 'post_id', '=', 'id'); 
    }); 
} 

它不工作,因为地方Laravel工艺双通话功能join()。 有人遇到它吗?如何解决它?

+0

你应该尽量避免使用全球范围内,它抓住它将会使得以后的代码更难维护。 –

+0

你确定你已经实现按[文件](https://laravel.com/docs/5.4/eloquent#global-scopes) – rahulsm

+0

@ThomasMoors我有两个类:岗位和videopost。 Videpost包含所有发布的字段和一个额外的字段。创造一个领域的新课堂 - 愚蠢。 – gidiberat

回答

0

如果你有一个类“视频”我会建议使用的hasMany /属于关联的两个类之间添加一个雄辩的关系,只是用

static::addGlobalScope('video', function ($builder) { 
    $builder->with('video'); 
}); 
+0

并使用关系? – gidiberat

+0

@gidiberat public function videos() { return $ this-> hasMany(Video :: class); } [laravel文档](https://laravel.com/docs/5.5/eloquent-relationships) –