我发现了很多类似的问题但没有真正的解决方案。
我有一个关于Laravel 5.4的项目
现在,在我的控制器中,我正在为我的搜索准备过滤器。
所以,想象一下,我想通过我的Cv
模型的“位置”和“关于”字段来过滤我的搜索。
所以,我发现每个人都有不同的价值
$arrOfTags = explode(',', $request['position']);
//separate basic search request(using some js modules that return a request with "," separator.
//Basically, find a Cv where location of "positions" is distinct
$filter0 = Cv::select('location')
->whereIn('position', $arrOfTags)
->groupBy('location')
->get();
$filter1 = Cv::select('about')
->whereIn('position', $arrOfTags)
->groupBy('about')
->get();
现在,我想在名为$filters
然后,在我的Blade中使用它:
@foreach($filters as $filter)
<li> <input type="checkbox" name="location" value="{{$filter->location}}"/> <span> {{$filter->location}} </span> </li>
@endforeach
@foreach($filters as $filter)
<li> <input type="checkbox" name="location" value="{{$filter->about}}"/> <span> {{$filter->about}} </span> </li>
@endforeach
我尝试了array_merge对象,创建了一个新的空对象并设置了这个对象和其他东西的参数,但没有成功。
答案 0 :(得分:1)
在这种情况下,您可以使用unique()
收集方法。获取数据:
$filters = Cv::select('location', 'about')
->whereIn('position', $arrOfTags)
->get();
为每列获取唯一值并使用结果:
@foreach($filters->unique('location') as $filter)
<li> <input type="checkbox" name="location" value="{{ $filter->location }}"/> <span> {{$filter->location}} </span> </li>
@endforeach
@foreach($filters->unique('about') as $filter)
<li> <input type="checkbox" name="about" value="{{ $filter->about }}"/> <span> {{ $filter->about }} </span> </li>
@endforeach
答案 1 :(得分:0)
您只需使用merge
方法合并two
个集合即可。 merge方法将给定的数组或集合与原始集合合并。试试这个 -
$filters = $filter0->merge($filter1);
有关详细信息,请参阅官方laravel documentation
答案 2 :(得分:0)
你为什么只是把它收集起来?
$locationFilters= Cv::select('location')
->whereIn('position', $arrOfTags)
->groupBy('location')
->get();
$aboutFilters= Cv::select('about')
->whereIn('position', $arrOfTags)
->groupBy('about')
->get();
return view('view name',compact('locationFilters','aboutFilters'));
然后在你看来:
@foreach($locationFilters as $filter)
<input value="{{$filter->location}}"/>
@endforeach
@foreach($aboutFilters as $filter)
<input value="{{$filter->about}}"/>
@endforeach
答案 3 :(得分:0)
在服务器端,您可以将其作为
$filters[] = $filter0->location;
$filters[] = $filter1->about;
在视图上,只需打印数组的值而不是访问对象。