Php 使用Laravel雄辩的数组删除匹配项

Php 使用Laravel雄辩的数组删除匹配项,php,arrays,laravel,loops,Php,Arrays,Laravel,Loops,我有两个雄辩的返回数组: $services = \App\Service::all(); $userService = \App\UserService::where('user_id', Auth::user()->id)->get(); 我尝试的是: @foreach($services as $service){ @foreach($userServices as $userService){ @if($userService->servic

我有两个雄辩的返回数组:

$services = \App\Service::all();
$userService = \App\UserService::where('user_id', Auth::user()->id)->get();
我尝试的是:

@foreach($services as $service){

    @foreach($userServices as $userService){
        @if($userService->service_id != $service->id)
            <option value="{{ $service->id }}">{{ $service->name }}</option>
        @endif
    @endforeach

@endforeach
@foreach($services as$service){
@foreach($userServices作为$userService){
@如果($userService->service\u id!=$service->id)
{{$service->name}
@恩迪夫
@endforeach
@endforeach
但这是重复选择,制造混乱


什么是好方法?

您需要在模型中使用嵌套关系

class Service extends Model
{
    public function user_service()
    {
       return $this->hasMany(UserService::class, 'user_id');
    }
}
和控制器

$user_id = Auth::user()->id;

$services = Service::with(['user_service' => function ($query) use ($user_id) {
    $query->where('user_id', $user_id);
}])->get();

return view('page', compact('services'));
我已经看过密码了

$services = \App\Service::all();
$userService = \App\UserService::where('user_id', Auth::user()->id)->get();


或者尝试使用原始查询进行内部联接。

如果不想更改方法,只需将
!=
更改为
=

@if($userService->service_id == $service->id)
或者,如果你想要一个好的方法,尝试雄辩

您的模型似乎是多对多关系

访问此链接

您可以尝试:

$userServices = \App\UserService::where('user_id', Auth::user()->id)
->pluck('service_id')->toArray();

$services = \App\Service::whereNotIn('id',$userServices)->get();

//Now you can loop through services 
@foreach($services as $service){

    <option value="{{ $service->id }}">{{ $service->name }}</option>

 @endforeach
$userServices=\App\UserService::where('user\u id',Auth::user()->id)
->拔毛('service_id')->toArray();
$services=\App\Service::whereNotIn('id',$userServices)->get();
//现在您可以通过服务进行循环
@foreach($services as$service){
{{$service->name}
@endforeach

希望它有帮助…

服务和用户之间的关系是什么?是多对多吗?@DimitrisKontoulis没有用户它的
UserService
,这种关系是一对一。意味着一个UserService有一个服务。你检索了两次数据。uservice就足以满足你的需要了
@if($userService->service_id == $service->id)
$userServices = \App\UserService::where('user_id', Auth::user()->id)
->pluck('service_id')->toArray();

$services = \App\Service::whereNotIn('id',$userServices)->get();

//Now you can loop through services 
@foreach($services as $service){

    <option value="{{ $service->id }}">{{ $service->name }}</option>

 @endforeach