Laravel Nova - 仅在表单下拉列表中加载与某些 属性 的关系
Laravel Nova - Only load relationship with certain property in form dropdown
我在名为 "Partner" 的资源中的 Nova 应用程序中添加了 BelongsTo 关系字段(关系名称:用户)。所以在 "create partner" 表单中,现在我有一个 select 元素来选择特定用户。
我写的关系包含一个条件:
$this->belongsTo('App\User')->where('role', 'partner');
在 select 下拉列表中,不是仅显示角色为 "partner" 的用户,而是列出了该应用的所有用户。我该如何解决这个问题?
User table : id, name, role
Partner table : id, user_id, name
合作伙伴模型:
class Partner extends Model
{
protected $fillable = [
'name', 'email', 'user_id'
];
public function User()
{
return $this->belongsTo('App\User')->where('role', 'partner');
}
}
合作伙伴的 Nova 资源字段方法:
public function fields(Request $request)
{
return [
Text::make('Name')->sortable(),
ID::make()->sortable(),
BelongsTo::make('User', 'user', 'App\Nova\User')->rules('required'),
HasMany::make('Clients'),
];
}
您需要在 Partner
Nova 资源下为 User
添加 relatableQuery。不需要 Partner
模型中的 where 条件。
use Laravel\Nova\Http\Requests\NovaRequest;
...
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('role', 'partner');
}
我在名为 "Partner" 的资源中的 Nova 应用程序中添加了 BelongsTo 关系字段(关系名称:用户)。所以在 "create partner" 表单中,现在我有一个 select 元素来选择特定用户。
我写的关系包含一个条件:
$this->belongsTo('App\User')->where('role', 'partner');
在 select 下拉列表中,不是仅显示角色为 "partner" 的用户,而是列出了该应用的所有用户。我该如何解决这个问题?
User table : id, name, role
Partner table : id, user_id, name
合作伙伴模型:
class Partner extends Model
{
protected $fillable = [
'name', 'email', 'user_id'
];
public function User()
{
return $this->belongsTo('App\User')->where('role', 'partner');
}
}
合作伙伴的 Nova 资源字段方法:
public function fields(Request $request)
{
return [
Text::make('Name')->sortable(),
ID::make()->sortable(),
BelongsTo::make('User', 'user', 'App\Nova\User')->rules('required'),
HasMany::make('Clients'),
];
}
您需要在 Partner
Nova 资源下为 User
添加 relatableQuery。不需要 Partner
模型中的 where 条件。
use Laravel\Nova\Http\Requests\NovaRequest;
...
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('role', 'partner');
}