如何过滤 Laravel Nova 中使用 BelongsTo 字段的 select 列表?
How do I filter a select list in Laravel Nova that uses a BelongsTo field?
我有一个测验资源,用于定义测验中的问题和答案。
BelongsTo 字段用于 select 该测验的创建者 - 它从我的用户 table 中提取此信息。但是,我只想拉 'role_id' 为 1 或 2 的用户。
我正在尝试使用 relatable 函数,但它似乎不想识别它的存在。
我的测验资源:
class Quiz extends Resource
{
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = 'App\Quiz\Quiz';
public function fields(Request $request)
{
return [
...
BelongsTo::make('User', 'users','\App\Nova\User')
->display(function($user){
return $user->first_name . ' ' . $user->last_name;
}),
...
];
}
}
我的 Nova 用户模型:
class User extends Resource
{
public static $model = 'App\Account\User';
public static function relatableQuizzes(NovaRequest $request, $query)
{
return $query->where('role_id', 1);
}
}
我尝试过使用不同的函数名称,包括:
relatable用户
relatable用户
relatable测验
relatable测验
relatable测验
但是每次都没有效果
如何按角色 ID 过滤此用户列表?
您可以在查询中使用 whereIn
方法,如下所示:
$users = User::whereIn('role_id', [1,2])->get();
当您从 Quiz
资源关联 Users
时,您是否尝试过相反的方式?
class Quiz extends Resource
{
// ...
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('role_id', 1);
}
}
试试这样的
public function options(Request $request)
{
$supplier = Supplier::all()->mapWithKeys(function($item) {
return [
$item['name'] => $item['item']
];
});
return $supplier;
}
我有一个测验资源,用于定义测验中的问题和答案。
BelongsTo 字段用于 select 该测验的创建者 - 它从我的用户 table 中提取此信息。但是,我只想拉 'role_id' 为 1 或 2 的用户。
我正在尝试使用 relatable 函数,但它似乎不想识别它的存在。
我的测验资源:
class Quiz extends Resource
{
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = 'App\Quiz\Quiz';
public function fields(Request $request)
{
return [
...
BelongsTo::make('User', 'users','\App\Nova\User')
->display(function($user){
return $user->first_name . ' ' . $user->last_name;
}),
...
];
}
}
我的 Nova 用户模型:
class User extends Resource
{
public static $model = 'App\Account\User';
public static function relatableQuizzes(NovaRequest $request, $query)
{
return $query->where('role_id', 1);
}
}
我尝试过使用不同的函数名称,包括: relatable用户 relatable用户 relatable测验 relatable测验 relatable测验
但是每次都没有效果
如何按角色 ID 过滤此用户列表?
您可以在查询中使用 whereIn
方法,如下所示:
$users = User::whereIn('role_id', [1,2])->get();
当您从 Quiz
资源关联 Users
时,您是否尝试过相反的方式?
class Quiz extends Resource
{
// ...
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('role_id', 1);
}
}
试试这样的
public function options(Request $request)
{
$supplier = Supplier::all()->mapWithKeys(function($item) {
return [
$item['name'] => $item['item']
];
});
return $supplier;
}