【问题标题】:Laravel Form::SelectLaravel 表单::选择
【发布时间】:2018-06-03 05:24:50
【问题描述】:

我正在使用下拉菜单选择 网站 为:

{{ Form::select('site', $sites, null, ['class' => 'form-control', 'placeholder' => 'Select a Site']) }}
{{ Form::label('site','site*') }}

我将选定的 站点 存储在数据库中作为 site_id。 由于这会从列表中返回所选项目的索引,因此如果选择了第一项,site_id 将在数据库中存储为 0。

这里的问题是,site_id 是我数据库中的一个外键,这会在将其与sites 表的column:id 匹配时导致错误。由于laravel迁移脚手架生成的id列从1开始,Form::select返回的site_id从0开始。

从Form::select 返回的索引是否会从1 开始?

或者有没有其他方法可以解决这个问题?

【问题讨论】:

  • 你能说明你是如何为刀片服务 $sites 的吗?
  • $sites = Site::latest()->get(['name']);我正在使用 laravel compact('sites')。
  • 尝试使用 Site::latest()->get()->pluck('name', 'id')->toArray() 这会将选择的索引/值更改为匹配项目的ID。
  • 这样就解决了问题。谢谢@NMahurin

标签: forms laravel select drop-down-menu


【解决方案1】:

当您从 DB 获取网站时,请保留原始 ID 以解决问题:

$sites = Site::pluck('name', 'id');

此代码将生成具有真实 ID 的站点名称列表:

[1 => 'Site name 1', 2 => 'Site name 2']

【讨论】:

  • 谢谢。但这只会将 id 0 更改为 1。这样,索引 0 中的站点和索引 1 中的站点将被存储为相同。对吗?
  • @SijanBhattarai 您说过您希望将其保存为 1 而不是 0。如果这不是您想要的,请尝试解释您想要实现的确切目标。
  • 我已经编辑了这个问题。我希望它更清楚。谢谢。
【解决方案2】:

你有很多解决方案

首先,只需通过验证进行验证,站点不能为 0,因为您的控制器

use Illuminate\Validation\Rule;

/** ... */
$this->validate($request, [
   'site'=>['required',Rule::notIn([0])]
])

您还可以检查站点模型的保存位置:

DB::transaction(function() use($request){
     /** mapping of site attribute */
     if($site->save())
     {

     }
}

您也可以通过 JavaScript 从客户端检查

{{ Form::select('site', $sites, null, ['id'=>'sites', 'class' => 'form-control', 'placeholder' => 'Select a Site']) }}
{{ Form::label('site','site*') }}


$("form input['type=submit']").click(function(e){
     e.preventDefault();
     if($('#sites').val() == 0)
     {
        alert('Please, select a site');
        return;
     }else{
         $(this).submit();
     }
})

【讨论】:

    【解决方案3】:

    如果你想插入没有 id 的名字,你可以使用 $sites = Site::pluck('name', 'name');我希望这会奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 2015-07-06
      • 2019-10-28
      • 1970-01-01
      • 2019-05-23
      • 2017-12-27
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多