Vin*_*yan 3 laravel laravel-nova
我在名为"Partner"的资源中的Nova应用程序中添加了一个BelongsTo关系字段(关系名称:user).所以现在在"创建伙伴"表单中,我有一个select元素来选择特定用户.
我写的关系包括一个条件:
$this->belongsTo('App\User')->where('role', 'partner');
Run Code Online (Sandbox Code Playgroud)
在选择下拉列表中,该应用的所有用户都会列出,而不是仅显示具有角色"合作伙伴"的用户.我该如何解决这个问题?
User table : id, name, role
Partner table : id, user_id, name
Run Code Online (Sandbox Code Playgroud)
伙伴模型:
class Partner extends Model
{
protected $fillable = [
'name', 'email', 'user_id'
];
public function User()
{
return $this->belongsTo('App\User')->where('role', 'partner');
}
}
Run Code Online (Sandbox Code Playgroud)
合作伙伴的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'),
];
}
Run Code Online (Sandbox Code Playgroud)
您需要User在PartnerNova资源下添加relatableQuery .不需要Partner模型中的where条件.
use Laravel\Nova\Http\Requests\NovaRequest;
...
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('role', 'partner');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1979 次 |
| 最近记录: |