Php 使用Multiselect进行Laravel数组搜索

Php 使用Multiselect进行Laravel数组搜索,php,arrays,laravel,select,collections,Php,Arrays,Laravel,Select,Collections,大家好,我的社区 我想知道你是否能帮我解决一个过去几天我和一个朋友都无法解决的烦人问题 我目前有两种型号——时事通讯和标签。时事通讯包含各种信息,其中有一列特别称为标签,当在前端存储和分解选定的值时,标签会内爆这些值 我正在处理的特定部分是编辑功能 目前我的编辑功能显示如下 public function edit($id, Tag $tag) { $tags = Tag::all(); $newsletter = Newsletter::find($id); $ta

大家好,我的社区

我想知道你是否能帮我解决一个过去几天我和一个朋友都无法解决的烦人问题

我目前有两种型号——时事通讯和标签。时事通讯包含各种信息,其中有一列特别称为标签,当在前端存储和分解选定的值时,标签会内爆这些值

我正在处理的特定部分是编辑功能

目前我的编辑功能显示如下

 public function edit($id, Tag $tag)
{

    $tags = Tag::all();
    $newsletter = Newsletter::find($id);
    $tagged = $newsletter->tags; 
    $selected = explode(",", $tagged);

    // dd($selected);
    return view('newsletter.edit', compact('newsletter', 'tags', 'selected'));
}
我的前端编辑刀片文件如下:

 <select name="tags[]" class="form-control" multiple="multiple" id="tags">         
        @foreach ($tags as $tag)
           <option value="{{ $tag->name}}" {{ (in_array($tag->name, $selected, true)) ? ' selected' : '' }}> {{$tag->name}}</option> 
        @endforeach
     </select>

@foreach($tags作为$tag)
名称($selected,true))?'所选“:”}>{{$tag->name}
@endforeach
但是-它只传递一个值,虽然selected传递值数组,但它似乎并没有检查所有值以选中所有选项

因此,仅选择3个选项中的一个


我知道我可能没有像大多数人那样使用数据透视表,我一直在尝试理解一些基本知识,并且在我被困在这里之前,我就知道如何使用数据透视表

我使用@if@endif而不是?:声明

尝试像这样更改代码

<select name="tags[]" class="form-control" multiple="multiple" id="tags">         
    @foreach ($tags as $tag)
       <option value="{{ $tag->name}}" @if(in_array($tag->name, $selected, true)) selected @endif }}> {{$tag->name}}</option> 
    @endforeach
</select>

@foreach($tags作为$tag)
name,$selected,true)selected@endif}>{{{$tag->name}
@endforeach

我认为您不需要在函数中使用Tag$Tag作为参数,请在foreach之前尝试@dd($tags,$selected),查看您从中获得的数据。让我们尝试使用数组($Tag->name,$selected),而不是数组($Tag->name,$selected,true)。我想可能是严格的参数导致了这个问题谢谢-我在这之后很快解决了它,它归结到了数据存储的方式!