Laravel, Обновление многострочных массивов - PullRequest
0 голосов
/ 19 сентября 2018

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

У меня есть одна информация, хранящаяся в базе данных, я преобразовываю данные в массив, чтобы вы могли лучше понять это.

array:4 [▼
  0 => "I"
  1 => "like"
  2 => "your"
  3 => "Mom"
]

когда я пытаюсь обновить данные * пример

array:4 [▼
  0 => "I"
  1 => "like"
  2 => "your"
  3 => "dad"
]

Результат отличается от моих ожиданий.вот результат:

array:4 [▼
  0 => "dad"
  1 => "dad"
  2 => "dad"
  3 => "dad"
]

здесь мой контроллер

public function updateTestCaseUser(Request $id)
    {
        $input = $id->all();

        $x = TestCase::find($id["id"]);
        $x->test_scenario = $input["test_scenario"];
        $x->post_condition = $input["post_condition"];
        $x->pre_condition = $input["pre_condition"];
        $x->expected_result = $input["expected_result"];
        // $x->steps = $input["steps"];
        $x->actual_result = $input["actual_result"];
        $x->status = $input["status"];
        $x->save();

        // Ignore these all ^

        $hitung = $id->steps;
        $hitung2 = count($hitung);

            for ($i=0; $i < $hitung2; $i++) {

                $y = Steps::find($id["id"]);
                $y->steps = $id->steps[$i]; // I am really sure the problem is at here

                $y->save();
            }

        return redirect("/testing/user/document")->with('Alert-succes', 'Succesfull');
    }

Игнорировать вершину $ hitung.Когда я использую dd () на $ hitung.результат такой же, как я ожидал.быть как

array:4 [▼
  0 => "I"
  1 => "like"
  2 => "your"
  3 => "dad"
]

Моя миграция шагов таблицы

public function up()
    {
        Schema::create('steps', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('id_steps')->unsigned()->index();
            $table->foreign('id_steps')->references('id')->on('test_cases')->onDelete('cascade');
            $table->integer('id_document');
            $table->integer('id_test_case');
            $table->text('steps');
            $table->timestamps();
        });
    }

1 Ответ

0 голосов
/ 20 сентября 2018

На самом деле здесь можно сделать предположение, но ... возможно ..

$y->steps[$i] = $id->steps[$i]; 

Редактировать

В вашей миграции вам нужно.

$table->json('steps');

ив вашей модели добавьте

protected $casts = [
    'steps' => 'array',
];

, тогда вы можете написать

$y->steps = $id->steps

без цикла

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