Laravel 5用于根据用户角色选择行的范围

时间:2015-12-06 09:46:31

标签: php laravel laravel-5

我有一个时间表应用程序,我在Laravel 5中编写过。我现在想根据用户权限(角色)选择时间表。我有3个级别的用户。

  • 用户
  • 管理

主管取代用户管理员取代主管

管理员用户应该能够看到所有用户时间表。主管应该只能看到与之关联的用户的时间表。用户只能看到自己的时间表。

我有以下方法设置来选择等待批准的时间表。此方法仅适用于用户级别,因为我添加了whereUserId子句。

如何使以下方法适用于用户(管理员,用户,主管)的所有角色?

/**
 * Load timesheets awaiting approval.
 *
 */
public function timesheetsAwaitingApproval() 
{
    return $this->timesheet->whereUserId($this->userid)->whereStatus('Submitted')->get();
}

1 个答案:

答案 0 :(得分:0)

尝试使用模型之间的hasManyThrough关系来获取所需的时间表,请查看doc。当然,只有你

才能使用

主管示例

public function timesheets()
{
    return $this->hasManyThrough('Timesheet::class', 'User::class', 'timesheet_id', 'user_id');
}

public function timesheetsAwaitingApproval() 
{
    return $this->timesheets->whereStatus('Submitted')->get();
}

或类似的东西,这只是一个可能适合你的想法。