Laravel 同一用户模型的 Nova 多个资源
Laravel Nova multiple resources for same user model
我有一个 laravel + nova 项目。
目前我有一个 USER 模型,有 'admin' 列,值为 0 或 1。
我使用此模型登录 nova 仪表板。
现在,我想在 nova 仪表板中将管理员用户和普通用户分开。就像在 nova 仪表板左侧显示两个资源 1) 管理员 2) 用户。
我可以为两个资源使用相同的用户模型吗?
目前显示的是名为 Admins 和 Users 的两个资源,但两者都始终打开管理员列表。根本不是用户列表。
谢谢
由于管理员和用户在您的案例中不是独立的用户,请考虑使用 Filters 代替您的 User
资源。
为了回答您的问题,如果您想坚持分别为管理员和用户实施 2 个 Nova 资源,您可以添加覆盖对 Nova 资源进行的 index
查询。要覆盖此行为,请将以下代码添加到 Nova 资源:
App\Nova\Admin.php
/**
* Build an "index" query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('admin', 1);
}
而下面的代码为
App\Nova\User.php
/**
* Build an "index" query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('admin', 0);
}
注意: 使用上述解决方案的用户仍然可以手动导航到 yourwebsite.test/nova/resource/admins/{id}
。考虑添加 Authorization,例如用户无法查看管理员(取决于您的用例)。
我有一个 laravel + nova 项目。
目前我有一个 USER 模型,有 'admin' 列,值为 0 或 1。
我使用此模型登录 nova 仪表板。
现在,我想在 nova 仪表板中将管理员用户和普通用户分开。就像在 nova 仪表板左侧显示两个资源 1) 管理员 2) 用户。
我可以为两个资源使用相同的用户模型吗?
目前显示的是名为 Admins 和 Users 的两个资源,但两者都始终打开管理员列表。根本不是用户列表。
谢谢
由于管理员和用户在您的案例中不是独立的用户,请考虑使用 Filters 代替您的 User
资源。
为了回答您的问题,如果您想坚持分别为管理员和用户实施 2 个 Nova 资源,您可以添加覆盖对 Nova 资源进行的 index
查询。要覆盖此行为,请将以下代码添加到 Nova 资源:
App\Nova\Admin.php
/**
* Build an "index" query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('admin', 1);
}
而下面的代码为
App\Nova\User.php
/**
* Build an "index" query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('admin', 0);
}
注意: 使用上述解决方案的用户仍然可以手动导航到 yourwebsite.test/nova/resource/admins/{id}
。考虑添加 Authorization,例如用户无法查看管理员(取决于您的用例)。