如何在这个JSON中正确添加2个项目?——Laravel



我必须同时在DB中保存x2相同的数据字段(nifname)。

有1个字段(nif),它完美地工作,并在数据库中保存x2行与不同的信息,所以JSON工作,但添加第2个字段(name),它只是保存nif值在所有字段。

我不太了解JSON和他的语法逻辑,但我认为问题是我如何在控制器中编写它。

p。d。不,我不能把EnviarCurriculumPreguntas::createx2在一行中,因为这不是这段代码的目的,所以我使用JSON代替。

EnviarCurriculum.php

namespace App;
use IlluminateDatabaseEloquentModel;
class EnviarCurriculum extends Model
{
protected $table = 'table';
protected $primaryKey = 'ID_table';
protected $fillable = [
'nif',
'name'
];
public function getRepeatedFields()
{
return json_decode($this->nif);
return json_decode($this->name);
}
}

EnviarCurriculumController.php

namespace AppHttpControllersenviarCurriculum;
use AppEnviarCurriculum;
use AppConfiguracion;
use AppHttpControllersController;
use IlluminateHttpRequest;
class EnviarCurriculumController extends Controller
{
public function index()
{
return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum()]);
}
public function create()
{
return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum()]);
}
public function store(Request $request)
{
foreach (request('nif', 'name') as $val) {
EnviarCurriculum::create(['nif' => $val, 'name' => $val]);
}
}
}

enviar_curriculum.blade.php

<!DOCTYPE html>
<html lang="es">
<head>
...
</head>
<body>
<form action="{{ route("store") }}" method="POST">
@csrf

<div>
<input type="text" name="nif[]" id="nif">
<input type="text" name="name[]" id="name">
</div>
<br>
<div>
<input type="text" name="nif[]" id="nif">
<input type="text" name="name[]" id="name">
</div>
<input type="submit" class="btn btn-primary" value="Enviar"> 
</form>
</body>
</html>

如果没有数组就不能有同名的输入

<!DOCTYPE html>
<html lang="es">
<head>
...
</head>
<body>
<form action="{{ route("store") }}" method="POST">
@csrf
<div>
<input type="text" name="nif[]" id="nif">
<input type="text" name="name[]" id="name">
</div>
<br>
<div>
<input type="text" name="nif[]" id="nif">
<input type="text" name="name[]" id="name">
</div>
<input type="submit" class="btn btn-primary" value="Enviar"> 
</form>
</body>
</html>

然后在store方法循环中数组输入

public function store(Request $request)
{
$nifs = $request->input('nif', []);
$names = $request->input('name', []);
foreach ($nifs as $key => $nif) {
EnviarCurriculum::create(['nif' => $nif, 'name' => $names[$key]??'']);
}
}

然后修复您的getRepeatedFields()方法以返回两个解码的字段。

public function getRepeatedFields()
{
return [
'nifs' => json_decode($this->nif),
'names' => json_decode($this->name),
];
}
<input type="text" name="nif[]" id="nif">
<input type="text" name="name[]" id="name">

在name中,nif只存储最后插入的项,请将其更改为数组