Laravel Nova可关联{Model}和findResourceOrFail()(未记录)

时间:2019-06-07 12:33:39

标签: laravel laravel-nova

我想在Laravel Nova中配置一个相互关系。

a 问题具有 n 替代项 a 问题具有 1 答案(恰好是替代方法)

在Laravel的模型中:

问题

public function alternatives()
{
    return $this->hasMany(Alternative::class);
}

public function answer()
{
    return $this->belongsTo(Alternative::class, 'answer_id', 'id');
}

替代

public function question()
{
    return $this->belongsTo(Question::class);
}

public function isAnswerOf()
{
    return$this->hasOne(Question::class, 'answer_id');
}

问题(Nova)

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('Nível')->type('level')->single(),
        Tags::make('Assuntos')->type('topic'),
        HasMany::make('Alternatives'),
        BelongsTo::make('Answer', 'answer', Alternative::class)->searchable()->nullable()
    ];
}

替代(Nova)

    public function fields(Request $request)
{
    return [
        ID::make()->sortable(),
        Text::make('Text', 'letter'),
        CKEditor::make('Body', 'body'),
        BelongsTo::make('Question', 'question', Question::class),
        HasOne::make('IsAnswerOf', 'isAnswerOf', Question::class)
    ];
}

有数百万种选择。 对于BelongsTo::make('Answer', 'answer', Alternative::class)->searchable()->nullable(),我只想显示作为该问题替代方案的答案(替代方案)。换句话说,我希望此字段中填充有与给定问题相同的question_id的替代项。

我在Google中发现了一个称为relatable {Query}的未记录的1 2 3功能,但是我无法获得所需的行为。

    public static function relatableAlternatives(NovaRequest $request, $query)
    {
       // $alternative = $request->findResourceOrFail(); (is failing)

       return $query->where('question_id', 'like', '219320');
    }

在可关联的{Model}中,“ Model”应该是模型本身还是我在Novas Resource中提供的别名? (这是答案)?

如果我对question_id进行硬编码,则可以。我如何获得question_id?

0 个答案:

没有答案