Навязать условия на принадлежности в Ларавел Нова - PullRequest
1 голос
/ 07 июня 2019

В следующем коде BelongsTo::make('Answer', 'answer', Alternative::class)->searchable() возвращает миллионы записей.

Я бы хотел ограничить это поле условием: его идентификатор должен совпадать с идентификаторами HasMany::make('Alternatives')

Question.php (Nova Resource) :

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),
        CKEditor::make('Wording', 'wording')->alwaysShow(),
        Boolean::make('Verified', 'is_verified'),
        Select::make('Type')->options([
            'multiple_choice' => 'Multiple Choice',
            'right_or_wrong' => 'Right or Wrong'
        ]),
        Tags::make('Level')->type('level')->single(),
        Tags::make('Subjects')->type('topic'),
        HasMany::make('Alternatives'),
        BelongsTo::make('Answer', 'answer', Alternative::class)->searchable()
    ];
}

Я имею в виду: у вопроса много альтернатив. На вопрос есть один ответ. Я хотел бы перечислить только возможные ответы в этой области. Которые, случается, те, что перечислены в HasMany::make('Alternatives'),

Прямо сейчас, BelongsTo::make('Answer', 'answer', Alternative::class)->searchable() ищет всю базу данных. Мне бы хотелось, чтобы показывались только соответствующие записи.

1 Ответ

0 голосов
/ 12 июня 2019

Select::make() может использоваться в этой ситуации: он запрашивает ограничение (соответствующий внешний ключ - или любое другое условие where) и создает поле выбора с результатами.

Select::make('Answer', 'answer_id')->options($alts->pluck('letter', 'id')),
...