【问题标题】:Select Multiple dropdwon list from database in Laravel从 Laravel 的数据库中选择多个下拉列表
【发布时间】:2019-02-01 21:59:52
【问题描述】:

在我的 Web 应用程序中,我使用多个选择选项从 json_encode 向数据库添加了多个数据。

在我的数据库列中,如下所示。

["Agriculture & Food Processing","Automobiles","Banking & Financial Services"]

现在我想检索这些数据以进行编辑和更新。我的观点就像附加的图片

我的代码如下所示

<div class="form-group">
<label for="industry">Intrsting Industry</label>
<select id="industry" name="industry[]" class="form-control" multiple>
    <option value="">Select Option  </option>
    <option>Agriculture &amp; Food Processing</option>
    <option>Automobiles</option>
    <option>Banking &amp; Financial Services</option>
    <option>BPO / KPO </option>
    <option>Civil &amp; Construction</option>
    <option>Consumer Goods &amp; Durables</option>
    <option>Consulting</option>
    <option>Education</option>
    <option>Engineering</option>
    <option>Ecommerce &amp; Internet</option>
    <option>Events &amp; Entertainment</option>
    <option>Export &amp; Import</option>
    <option>Government &amp; Public Sector</option>
    <option>Healthcare</option>
    <option>Hotel, Travel &amp; Leisure</option>
    <option>Insurance</option>
    <option>IT &amp; Telecom</option>
    <option>Logistics &amp; Transportation</option>
    <option>Manufacturing</option>
    <option>Manpower &amp; Security</option>
    <option>News &amp; Media</option>
    <option>NGO &amp; Non profit</option>
    <option>Pharmaceutical</option>
    <option>Real Estate</option>
    <option>Wholesale &amp; Retail</option>
    <option>Others</option>
  </select>

那么我如何从数据库中选择上面的列表。

【问题讨论】:

    标签: mysql html forms laravel-5


    【解决方案1】:

    其实你不需要手动对其进行json_encode,laravel可以选择castarray/json的任意属性:

    我们假设您的型号名称是 Item

    //Model
    class Item{
       protected $casts = [
          'industry' => 'array'
       ]
    //snap
    }
    //Controller
    class ItemController extends Controller{
       //snap   
       public function update($id,\Request $request){
          $item = Item::findOrFail($item);
          // no need to json_encode! laravel handle this magically!
          $item->industry = $request->industry;
          $item->save();
       }
       //snap
       public function show($id){
          $item = Item::findOrFail($id);
          return view('item.show',compact('item'));
       }
    }
    
    @php
       // just making an array of industry options, so later we will iterate on it.
       $industries = [
          'Agriculture &amp; Food Processing',
          'Automobiles',
          'Banking &amp; Financial Services',
          //list all the industries here
       ];
    @endphp
    <select id="industry" name="industry[]" class="form-control" multiple>
       <!-- default value -->
        <option value="">Select Option </option>
        @foreach($industries as $industry)
           <!-- if industry found in current item's industry field we add selected to it -->
           <option @if(in_array($industry,$item->industry)) selected @endif>{{$industry}}</option>
        @endforeach
      </select>
    

    【讨论】:

    • 我得到一个名为“in_array() 期望参数 2 是数组,给定字符串”的错误。在这种情况下,我没有从模型中获取数据。我直接通过 DB::table 门面获取数据。
    • 好吧,看看我描述的整个模型是负责将你的行业(默认情况下作为字符串检索)转换为数组。因此,如果您想使用 DB 外观,则需要自己进行投射。使用json_decode 函数将您的行业领域转换为数组。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2010-09-17
    • 2015-10-25
    相关资源
    最近更新 更多