首页 > 解决方案 > 如何在使用 eloquent 时排除某些列 拉拉维尔

问题描述

我有一个小组表。我的主桌。所以我有 group_hotels 表,这个表是一个数据透视表。(id,group_id,hotel_id)

现在在我的刀片组编辑页面中,我想在添加数据透视表之前列出如下代码:我的组模型:

public function hotels(){
    return $this ->belongsToMany('App\Models\Hotel','group_hotels');
}

我的控制器:

$group = Group::find($id);
$hotels=Hotel::all();

我的刀片酒店 select2 字段:

@foreach($hotels as $hotel)
   <option value="{{$hotel->id}}">{{$hotel->name}}</option>
     @foreach ($group->hotels as $item)
       <option value="{{$item->id}}">{{$item->name}}</option>
      @endforeach
 @endforeach

输出如下: http: //prntscr.com/10v13ed

现在我想做的是,在我的 group_hotels 数据透视表中,如果酒店 id 存在于 group_hotels 中,除了数据透视表中的 id 什么都没有出现在酒店表中。

简而言之:如果 group_hotels 表中的 hotel_id 部分出现在我的酒店表中,我不想在酒店变量中调用它。

标签: phplaravel

解决方案


您可以选择的一种方法是在查询级别排除您不希望出现在列表中的酒店:

Hotel::whereNotKey($group->hotels->modelKeys())->get();

推荐阅读