2017-09-25 129 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) –