digital-creative/custom-relationship-field

在不设置真实资源关系的情况下模拟HasMany关系

v1.1.3 2024-07-18 12:26 UTC

This package is auto-updated.

Last update: 2024-09-18 12:45:43 UTC


README

Latest Version on Packagist Total Downloads License

此字段与nova的默认HasMany关系字段功能相似,但无需与资源建立真实关系

这意味着您可以自由地将资源A显示在资源B的详情页中,而不需要在它们之间创建真实的关系。

安装

您可以通过composer安装此包

composer require digital-creative/custom-relationship-field
use DigitalCreative\CustomRelationshipField\CustomRelationshipField;
use DigitalCreative\CustomRelationshipField\CustomRelationshipFieldTrait;

trait UserWithSimilarNameTrait
{    
    public static function similarNameQuery(NovaRequest $request, Builder $query, User $model): Builder
    { 
        return $query->where('last_name', $model->last_name)->whereKeyNot($model->getKey());
    }
    
    public function similarNameFields(NovaRequest $request): array
    {
        return [
            ID::make(),
            Text::make('First Name'),
            Text::make('Last Name'),
        ];
    }
    
    public function similarNameActions(NovaRequest $request): array 
    {
        return [];
    }

    public function similarNameFilters(NovaRequest $request): array
    {
        return [];
    }
}

class User extends Resource
{    
    use CustomRelationshipFieldTrait;
    use UserWithSimilarNameTrait;
    
    public function fields(NovaRequest $request): array
    {
        return [
            ...
            CustomRelationshipField::make('Users with similar name', 'similarName', User::class),
            ...
        ];
    }
}

⭐️ 表达您的支持

如果此项目对您有帮助,请给一个⭐️!

您可能还喜欢的其他包

许可证

麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。