【问题标题】:How to add correctly 2 items in this JSON? - Laravel如何在此 JSON 中正确添加 2 个项目? - 拉拉维尔
【发布时间】:2021-09-05 14:49:20
【问题描述】:

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

使用 1 个字段 (nif) 它可以完美运行并使用不同的信息在数据库中保存 x2 行,因此 JSON 可以正常工作,但添加第 2 个字段 (name) 它只会保存 nif 值字段。

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

P.D.不,我不能将EnviarCurriculumPreguntas::create x2 放在一行中,因为这不是这段代码的目的,所以我改用 JSON。

EnviarCurriculum.php

namespace App;

use Illuminate\Database\Eloquent\Model;

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 App\Http\Controllers\enviarCurriculum;

use App\EnviarCurriculum;
use App\Configuracion;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

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>

【问题讨论】:

  • 公共函数 getRepeatedFields() { return json_decode($this->nif);返回 json_decode($this->name); }

标签: php laravel laravel-6


【解决方案1】:

如果不是数组,则不能输入具有相同名称的输入

<!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),
    ];
}

【讨论】:

  • 非常感谢这个优秀的代码和理论来理解它!!!
【解决方案2】:
      <input type="text" name="nif[]" id="nif">

       <input type="text" name="name[]" id="name">

在名称中,如果只存储最后插入的项目,请将其更改为数组

【讨论】:

  • 哎呀,真的!谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-03-17
  • 2017-09-19
  • 2015-05-07
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2021-10-20
相关资源
最近更新 更多