我正在尝试列出不在数据透视表中的值。
这些表是参与者和事件(参与者和事件)。
这将返回数据透视表中的所有参与者。
@foreach ($evento->participantes as $participante)
<tr value="">
<td >{{$participante->nombre}}</td>
<td>{{$participante->apellidos}}</td>
<td>{{$participante->sexo}}</td>
<td>{{$participante->categoria->nombre}}</td>
<td>{{\Carbon\Carbon::parse($participante->fecha_nacimiento)->age}}</td>
<td>{{$participante->club->nombre}}</td>
<td>{{$participante->cinturon}}</td>
<td><input type="checkbox" name="id_participante[]" value="{{$participante->id_participante}}"/></td>
</tr>
@endforeach
我认为使用in_array()。所以我尝试了
@foreach ($participantes as $participante)
@if(in_array($participante,$evento->participante))
但是“ $ evento-> participante”不是数组,所以我尝试了-> toArray()..但是它不起作用。
我的Evento模型带有“ participantes方法”:
class Evento extends Model
{
protected $primaryKey = 'id_evento';
public function participantes(){
return $this->belongsToMany('App\Participante', 'evento_participante', 'id_evento', 'id_participante' );
}
}
谢谢,抱歉我的英语。
答案 0 :(得分:0)
关系基本上返回集合数据类型。因此,您可以使用各种收集方法来代替遍历关系,这不是优化查询的最佳方法。请查看文档链接https://laravel.com/docs/5.8/collections
// find the event
$event = Event::find(1);
$participant_ids = $event->participants->pluck('pivot.participant_id')->toArray();
//finding participants who are not in event
$not_in_event = Participant::whereNotIn('id',$participant_ids)->get();
return $not_in_event;