【问题标题】:Laravel, get selected values from database in select2Laravel,从select2中的数据库中获取选定的值
【发布时间】:2019-02-04 14:35:00
【问题描述】:

我正在尝试将数据库中的所有选定值显示到多个 select2。所以当我想添加其他事件时,我可以添加它们。

Offer tables:
id:1
title: event1
events: 17,6,8

列事件具有所有选定事件的 ID。

这就是我的工作:

public function edit($id)
    {
        $offer=Offers::find($id);
         $events=Events::all();

        $explode=  explode(',', $offer->events);


        return view('edit',['offer'=>$offer,'events'=>$events,'explode'=>$explode]);
    }

刀片:

<div class="form-group m-form__group row">
    <label class="col-xl-3 col-lg-3 col-form-label">****</label>
    <div class="col-xl-9 col-lg-9">
        <select class="form-control m-select2" id="m_select2_3" name="events[]" multiple="multiple">
            <optgroup label="Events">
                @foreach($events as $event)
                    @foreach($explode as $item)
                        <option value="{{$event->id}}"  {{ $item == $event->id ? 'selected="selected"' : ''}}>{{$event->title}}</option>
                    @endforeach
                @endforeach
            </optgroup>
        </select>
    </div>
</div>

所以当我选择该值时,它会显示三次重复值

【问题讨论】:

  • 你能把你的控制器代码也贴出来吗?
  • 是offer 到events 一对多的关系吗?你从你的foreach 得到重复,有多个events belongs 到一个offer。
  • 去掉@foreach $explode,使用in_array($event-&gt;id,$explode);
  • @davidloper 谢谢

标签: php laravel jquery-select2


【解决方案1】:

您正在加载$events 变量中的所有数据库事件,而不是与商品关联的事件。你应该这样做:

$events = Event::find(explode(',', Offer::find($id)->events));

话虽如此,最好使用关系而不是手动设置 id https://laravel.com/docs/5.7/eloquent-relationships

【讨论】:

    【解决方案2】:

    也许当你得到事件时,你被重复了,试试这个:

    public function edit($id)
        {
            $offer=Offers::find($id);
             $events=Events::all();
    
            $explode =  array_values(array_unique(explode(',', $offer->events)));
    
    
    
            return view('edit',['offer'=>$offer,'events'=>$events,'explode'=>$explode]);
        }
    

    但是,如果是这种情况,您应该首先知道您提供的表没有重复的事件,因此您可能需要更改保存事件的脚本以及删除重复条目的提议。

    另外,我不知道您的“事件”表是否也包含重复的事件。请检查并从您的“事件”表中删除任何重复的值,如果您不能在控制器中使用相同的代码,那么就像这样:

    $events = array_values(array_unique(Events::all()-&gt;toArray()));

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2021-08-09
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      相关资源
      最近更新 更多