如何在Laravel中为同一记录添加多行?

问题描述 投票:-1回答:2

image

您可以看到图像具有添加行按钮。其中为一条记录添加多行。我正在尝试为此设计数据库,但对此步骤感到困惑。一个想法是,我应该以每列json的形式存储此数据。但是我认为这不是一个好方法。请分享您的想法我如何为数据库中的同一记录添加多个值?

laravel laravel-5 database-design eloquent laravel-5.8
2个回答
0
投票

取决于您的要求。

如果需要对其执行许多操作,请创建一个新表cartons,并在其中添加其值以及主表的ID作为外键。然后,您可以通过Laravel关系访问它。 JSON易于管理,并且筛选比JSON更快。

但是如果在其他地方不需要太多这些记录,则只需将它们添加一次,然后使用非常少见的JSON就可以了。


0
投票

将所有这些记录存储在单个json列中实际上是一个好主意。唯一的是,您希望将所有这些输入使用相同的名称进行分组,因此可以创建它们的数组,这将使您更容易阅读它们。因此,第一步是在数据库中创建一个json()列:

$table->json('options')->nullable();

[之后,将这些选项转换为相应模型中的数组,以便于读取数据:

public $casts = [
    'options' => 'array'
];

此后,通过创建具有相同array_name的选项的多个输入来更改输入名称,并将其存储在数据库中。保持key_names不变。您可以使用如下形式:

<input type="text" id="input" name="options[array_name][key_name]">

提交表单后,您的选项输入应如下所示:

  "options" => array:2 [▼
    "array_name" => array:1 [▼
      "key_name" => "key_value"
    ]
  ]

当您将值存储在数据库中时,可以遍历这些选项并按如下所示显示它:

foreach($model->options as $key => $value){
  <p> This is the array key: {{$key}} </p>
  <p> This is the key value: {{$value}} </p>
}

[如果还有其他问题,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.