Laravel在代码中预先填充数据库字段 - 最好的方法吗?

时间:2018-02-24 21:26:44

标签: php json laravel laravel-blade

在我的用例中,我有用户输入的数据,显示为表格中的行,说明具有货币值的项目。一个很好的例子是每个都有零售价值的汽车。然后,我给用户一个额外的列来输入他们自己的调整值,以便他们可以看到他们的调整值的总和旁边的原始值的总和,以进行比较。然后,我将每行的调整值存储为JSON字段,以记录调整的值和提议名称。

enter image description here

我想用原始值数据启动adjust列,然后如果用户进行更改,则存储该值或原始值(如果未更改)。我的问题是,我如何最初使用原始值填充调整数据库字段,以便在进行任何更改之前,显示/存储的值与原始值相同。我在考虑用户点击“新提案”按钮,他们为提案命名,然后查看具有原始值的项目列表和已准备调整原始值的调整字段。然后我保存他们的调整数据。

在显示数据库字段之前,是否需要在控制器(或刀片)中运行循环以预先填充数据库字段?我想在加载刀片之前将新的提议名称和值添加到数据库中的每个项目。这样刀片显示默认的未更改设置,但也可以保存调整。

希望这是有道理的。任何想法或建议都是非常受欢迎的。

我正在使用带有XAMPP的Laravel 5.5和MariaDB 10.2(用于JSON字段支持)

3 个答案:

答案 0 :(得分:0)

我没有看到在数据库中填充它的任何目的。只需将其显示为具有预先填充值的输入:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="device" data-name="first" data-screen="image-1.png">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
  <defs>
    <rect id="w-circle-stroke-a" width="24" height="24"/>
    <path id="w-circle-stroke-b" d="M12,2 C17.52,2 22,6.48 22,12 C22,17.52 17.52,22 12,22 C6.48,22 2,17.52 2,12 C2,6.48 6.48,2 12,2 Z M12,3.81818182 C7.48415409,3.81818182 3.81818182,7.48415409 3.81818182,12 C3.81818182,16.5158459 7.48415409,20.1818182 12,20.1818182 C16.5158459,20.1818182 20.1818182,16.5158459 20.1818182,12 C20.1818182,7.48415409 16.5158459,3.81818182 12,3.81818182 Z M10.5553177,13.4773237 L15.155405,8.80967806 C15.5597962,8.4027095 16.222261,8.39598875 16.6350615,8.79466684 C16.6382917,8.79778661 16.6600317,8.81952282 16.7002813,8.85987545 C17.0999062,9.26113743 17.0999062,9.90402237 16.7002813,10.3052843 L10.5553177,16.5 L7.29971874,13.2228714 C6.90252847,12.8240541 6.8997633,12.1859262 7.29348277,11.7837778 L7.33224151,11.7441893 C7.73340831,11.3344341 8.39555055,11.3228774 8.8111776,11.7183766 C8.81566955,11.722651 9.39704957,12.3089667 10.5553177,13.4773237 Z"/>
    <image id="image-5" href="image-to-be-inserted.jpg"/>
  </defs>
  <g fill="none" fill-rule="evenodd">
    <mask id="w-circle-stroke-c" fill="#fff">
      <use xlink:href="#w-circle-stroke-b"/>
    </mask>
    <g fill="#2D8EFF" mask="url(#w-circle-stroke-c)">
      <rect width="24" height="24"/>
    </g>
    <use fill="url(#pattern-4)" xlink:href="#path-3"/>
    <use fill="#000" filter="url(#filter-10)" xlink:href="#path-9"/>
  </g>
</svg>
</div>

<div class="device" data-name="second" data-screen="image-1.png">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24">
  <defs>
    <rect id="w-circle-stroke-a" width="24" height="24"/>
    <path id="w-circle-stroke-b" d="M12,2 C17.52,2 22,6.48 22,12 C22,17.52 17.52,22 12,22 C6.48,22 2,17.52 2,12 C2,6.48 6.48,2 12,2 Z M12,3.81818182 C7.48415409,3.81818182 3.81818182,7.48415409 3.81818182,12 C3.81818182,16.5158459 7.48415409,20.1818182 12,20.1818182 C16.5158459,20.1818182 20.1818182,16.5158459 20.1818182,12 C20.1818182,7.48415409 16.5158459,3.81818182 12,3.81818182 Z M10.5553177,13.4773237 L15.155405,8.80967806 C15.5597962,8.4027095 16.222261,8.39598875 16.6350615,8.79466684 C16.6382917,8.79778661 16.6600317,8.81952282 16.7002813,8.85987545 C17.0999062,9.26113743 17.0999062,9.90402237 16.7002813,10.3052843 L10.5553177,16.5 L7.29971874,13.2228714 C6.90252847,12.8240541 6.8997633,12.1859262 7.29348277,11.7837778 L7.33224151,11.7441893 C7.73340831,11.3344341 8.39555055,11.3228774 8.8111776,11.7183766 C8.81566955,11.722651 9.39704957,12.3089667 10.5553177,13.4773237 Z"/>
    <image id="image-5" href="image-to-be-inserted.jpg"/>
  </defs>
  <g fill="none" fill-rule="evenodd">
    <mask id="w-circle-stroke-c" fill="#fff">
      <use xlink:href="#w-circle-stroke-b"/>
    </mask>
    <g fill="#2D8EFF" mask="url(#w-circle-stroke-c)">
      <rect width="24" height="24"/>
    </g>
    <use fill="url(#pattern-4)" xlink:href="#path-3"/>
    <use fill="#000" filter="url(#filter-10)" xlink:href="#path-9"/>
  </g>
</svg>
</div>

循环。然后在提交表单之后进行处理。

答案 1 :(得分:0)

在创建/插入原始数据数据库时,您需要填充两个数据库。

因此,如果您插入表格A,其中包含&#34;真实&#34;数据 确保向表B中插入相同的值,以保存&#34; user&#34;修改过的数据

虽然正如@Laraleg所说,你真的不需要预先填充另一张桌子。只需将表A中的相同值输出到输入字段

答案 2 :(得分:0)

我不太确定它可以提供帮助,但我相信你会得到Idea如何使用它。

{{Form::text('name', (
    old('name') ? old('name') : ( 
        isset($database_entity->name) ? $database_entity->name : (
            isset($default_holder) ? $default_holder : NULL
        )
    )
) ,['class'=>'whatever'] )}}

我在文件字段中使用了Laravel collective。我检查了条件,如果值是由函数提示(当验证为false时)它将从old设置。如果在使用编辑或更新时,如果旧函数中没有值,则从数据库模态中没有值。

如果他们两个都没有,那么它会设置你的值,或者你可以说预先填充变量。

祝你好运!!