Как вставить статическое поле в массив запроса (Laravel 5.7) - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблема с какой-то небольшой функцией функции магазина, и мне кажется, что я не нашел в интернете правильного ответа, который бы мне помог.

Я хочу добавить статические данныев запросе массива, чтобы при отправке данных поле, проверенное в сводной таблице, автоматически заполнялось некоторым целым числом.

У меня есть следующие таблицы:

Schema::create('mounter_evaluations', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('project_id')->index()->unsigned()->nullable();
    $table->text('mentions')->nullable();
    $table->softDeletes();
    $table->timestamps();
});  

Schema::create('mounter_procedures', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('mounter_norm_id')->index()->unsigned()->nullable();
    $table->string('detail');
    $table->softDeletes();
    $table->timestamps();
});

Schema::create('mounter_procedures_checks', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('mounter_evaluation_id')->unsinged()->nullable()->index();
    $table->integer('mounter_procedure_id')->unsinged()->nullable()->index();
    $table->integer('checked')->unsinged()->nullable();
    $table->timestamps();
});

Следующие модели:

public function mounterevaluation() {
    return $this->belongsToMany(
        'App\MounterEvaluation',
        'mounter_procedures_checks',
        'mounter_evaluation_id',
        'mounter_procedure_id'
    )->withPivot(['checked']);
}

public function mounterprocedures() {
    return $this->belongsToMany(
        'App\MounterProcedures',
        'mounter_procedures_checks',
        'mounter_evaluation_id',
        'mounter_procedure_id'
    )->withPivot(['checked']);
}

Вот моя функция хранения:

public function store(Request $request, $idProiect) {
    $evaluation = MounterEvaluation::where('project_id', $idProiect)->first();
    if (!$evaluation) {
        $evaluation = new MounterEvaluation();
        $evaluation->project_id = $idProiect;
    }
    $evaluation->mentions = $request->mentions;
    $evaluation->save();

    // $request->request->add(['checked' => 1]);
    // $evaluation->mounterprocedures()->sync($request->procedures);

    // $evaluation->mounterprocedures()->sync($request->all() + ['checked' => 1]);
    $evaluation->mounterprocedures()->sync($request->procedures);
    // $request->request->add(['checked' => 1]);
    $evaluation->mounterprocedures()->request->add(['checked' => 1]);
    return response()->json($evaluation, 201);
}

КаждыйКогда человек проверяет некоторые данные в форме оценки, эта проверка должна быть сохранена в сводной таблице.

1 Ответ

0 голосов
/ 25 февраля 2019

Поместите его в массив $request простым способом, как вы помещаете значения в любой другой массив следующим образом:

$request['new_key1'] = 'new value 1';
$request['new_key2'] = 'new value 2';

Вот как я знаю, это работает точно, в вашем контроллере у вас есть запросэкземпляр, передаваемый в качестве параметра, и затем вы можете добавить значения, как обычно:

namespace App\Http\Controllers;
use Illuminate\Http\Request;

public function example(Request $request)
{
     $request['new_key1'] = 'new value 1';
     $request['new_key2'] = 'new value 2';
     dd($request->input('new_key1'));//new value 1
}

В вашем случае, если $request->procedures является массивом, вы можете сделать:

$request->procedures = $request->procedures->toArray();
$request->procedures['checked'] = 1;
$evaluation->mounterprocedures()->sync($request->procedures);

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...