Невозможно создать новую запись при переопределении indexQuery в Laravel Nova - PullRequest
0 голосов
/ 05 июля 2019

Я использую Laravel-Nova-Nested-Form , но при создании новых записей я получаю ту же ошибку, на которую ссылаются ниже.Любое предложение, чтобы исправить это, будет очень полезно.

{
  "messages" :  "The given data was invalid.",
  "errors" : {
    "answers[0][question]" : ["The question field is required."]
    }
}

Это, вероятно, вызвано этим в ресурсе ответов:

BelongsTo::make('Question')
->searchable()
->rules('required'),

Удаление этой части позволит мне обновить ответы, нокогда я пытаюсь их создать, я получаю другое сообщение об ошибке (логику):

{
    "message": "SQLSTATE[HY000]: General error: 1364 Field 'question_id' doesn't have a default value (SQL: insert into `answers` (`title`, `value`, `status`, `follow_up`, `updated_at`, `created_at`) values (dd, aa, 0, 1, 2019-04-25 07:16:35, 2019-04-25 07:16:35))",
    "exception": "Illuminate\\Database\\QueryException",
    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
    "line": 664,
    ...
}

Поэтому вместо удаления этой части из ресурса ответа я добавил кое-что:

BelongsTo::make('Question')
->searchable()
->rules('required')
->hideWhenUpdating(),

Это снова позволяет мне обновлять ответы, но как только я хочу добавить новый, я снова получаю первое сообщение об ошибке (логика):

{
  "messages" :  "The given data was invalid.",
  "errors" : {
    "answers[0][question]" : ["The question field is required."]
    }
}

И я пробовал еще немного, но я всегдазастрял в неспособности создать новый ответ.

Это мой ресурс Нова

<?php

namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Select;
use Jackabox\DuplicateField\DuplicateField;

class Answer extends Resource
{
    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\Answer';

    /**
     * The single value that should be used to represent the resource when being displayed.
     *
     * @var string
     */
    public static $title = 'title';

    /**
     * The columns that should be searched.
     *
     * @var array
     */
    public static $search = [
        'id', 'title', 'value',
    ];

    /**
     * Get the fields displayed by the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            BelongsTo::make('Question')
            ->searchable()
            ->rules('required'),

            Text::make('title')
            ->sortable()
            ->rules('required', 'max:255'),

            Text::make('value')
            ->sortable()
            ->rules('required', 'max:255'),

            Select::make('status')->options([
                '0' => 'System',
                '1' => 'User',
            ])
            ->displayUsingLabels()
            ->rules('required'),

            BelongsTo::make('Follow up', 'follow_up_question', 'App\Nova\Question')
            ->searchable()
            ->nullable(),
        ];
    }

    /**
     * Get the cards available for the request.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function cards(Request $request)
    {
        return [];
    }

    /**
     * Get the filters available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function filters(Request $request)
    {
        return [];
    }

    /**
     * Get the lenses available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function lenses(Request $request)
    {
        return [];
    }

    /**
     * Get the actions available for the resource.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function actions(Request $request)
    {
        return [];
    }
}

Любая помощь будет высоко ценится

...