如何使用 Laravel 避免 select 中的重复数据?

How to avoid repeated data in a select using Laravel?

我有这个select

我从数据库中的 table 获取所有这些信息...所以我有一些重复的行...我想找到一种 if 或其他方法来避免重复select中的信息...这是我的 select

<div class="form-group row col-xs-3 col-md-4" >
<label class="control-label col-md-4" >Cartera: </label>
<div class="col-md-8">
 <select name="carteras_id" id="carteras_id" class="form-control">
@foreach ($carteras as $cartera)
  <option value="{{ $cartera->carteras_id }}" class="form-control">{{ $cartera->cartera }}</option>
@endforeach
</select>
</div>

这是我的查询

$carteras = DB::table('tbl_perimetros')
            ->join('tbl_lista_carteras', 'tbl_perimetros.carteras_id', '=', 'tbl_lista_carteras.id')
            ->get();

您可以在集合中使用 unique('cartera') 以仅获取在 cartera 列中具有唯一值的记录

$unique = $carteras->unique('cartera')

试试这个:

$carteras = DB::table('tbl_perimetros')
    ->join('tbl_lista_carteras', 'tbl_perimetros.carteras_id', '=', 'tbl_lista_carteras.id')
    ->distinct()
    ->get();

您可以在 查询 中使用方法 group By:

$carteras = DB::table('tbl_perimetros')
            ->join('tbl_lista_carteras', 'tbl_perimetros.carteras_id', '=', 'tbl_lista_carteras.id')
            ->groupBy('tbl_perimetros.carteras_id')
            ->get();

好像tbl_lista_carteras有很多tbl_perimetros,所以当你对这两个table使用join时,tbl_lista_carteras的数据会重复,你只需要显示tbl_lista_carteras的数据,你可以直接从tbl_lista_carteras获取:

$carteras = DB::table('tbl_lista_carteras')
    ->select('id','cartera')
    ->get();

并在您的视图中显示它们:

@foreach ($carteras as $cartera)
  <option value="{{ $cartera->id }}" class="form-control">{{ $cartera->cartera }}</option>
@endforeach