我是Laravel的新手,这就是为什么我很确定我的想法是错误的。到了这一步......
我正在构建Laravel应用程序。
我拥有的其他内容:
现在我正在创建文档。目前,如果user_id或company_id将包含在文档标题中,则无关紧要。
我需要的是有能力,例如。
我有3个想法:
我觉得这些想法“很脏”。您能否提供有关如何使用代码段很好地实现此功能的信息?我认为这个主题很常见,很多人都会使用这个。我会很感激任何提示。
答案 0 :(得分:0)
一种方法可能是使用本地范围。
https://laravel.com/docs/5.5/eloquent#local-scopes
在Document
模型上定义两个范围:
public function scopeBelongingToUser($query)
{
return $query->where('user_id', auth()->user()->id);
}
// this is the same as doing on your User model
public function documents()
{
$this->hasMany(Document::class);
}
public function scopeBelongingToAdmin($query)
{
if (auth()->user()->roles->contains('admin') {
return $query->select('*');
}
abort(403, 'Unauthorized');
}
然后您可以在以后使用它:
Document::belongingToUser();
Document::belongingToAdmin();