laravel 灯丝中继器内部的独特验证

ghg1uchk  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(63)

我有一个Laravel项目与灯丝的管理面板。我有两个模型:课程和单位一门课程可以有许多单元。一个单元属于一个课程。
在CourseResource表单中,我实现了一个Wizard组件来创建Multistep表单。前两个步骤是设置/编辑课程的数据,第三个步骤是使用Repeater组件管理课程的单元。
我想实现的是一个唯一的规则,以确保创建/编辑单元与唯一的名称,但只有那些属于同一个过程。
我只知道基本的唯一规则,以确保所有注册单元之间的唯一名称值,如下所示:

TextInput::make('name')
        ->unique(Unit::class, 'name', ignoreRecord: true)

我只做到了这一点,这只适用于编辑上下文:

use Illuminate\Validation\Rules\Unique;

    TextInput::make('name')
        ->unique(Unit::class, 'name', ignoreRecord: true, modifyRuleUsing: function (Unique $rule, string $context, ?Model $record) {
            return $rule
                ->where('course_id', $record->course_id)
        })

因此,我如何实现唯一的规则,以验证唯一的单位名称之间的单位谁属于同一课程只。在创建上下文中和编辑上下文中。
问候。

tp5buhyn

tp5buhyn1#

你可以使用这个:

TextInput::make('name')
    ->unique(Unit::class, column: 'name', ignoreRecord: true)

相关问题