我得到了一个具有encuesta
关系的表encuesta_pregunta
,该表encuesta_pregunta
与encuesta_respuesta
有关系,它返回了这个
"id": 4,
//...table info...
"encuesta_preguntas": [
{
"id": 10,
"encuesta_id": 4,
"pregunta_id": 5,
//...table info....
"encuesta_respuestas": [
//this relationship can be empty
]
},
{
"id": 11,
"encuesta_id": 4,
"pregunta_id": 3,
//...table info....
"encuesta_respuestas": [
]
},
{
"id": 12,
"encuesta_id": 4,
"pregunta_id": 2,
//...table info....
"encuesta_respuestas": [
]
}
]
}
有没有一种方法可以进行检查,而无需遍历每个encuesta_preguntas
来知道encuesta_respuesta
是否为空?
这样得到上面的回复
$encuesta = Encuesta::with(['encuestaPreguntas' => function($preguntas) {
$preguntas->with(['encuestaRespuestas' => function($respuestas) {
$respuestas->where('user_id','=',auth()->id());
}]);
}])->where('fecha_inicio','<=',date('Y-m-d'))
->where('fecha_fin','>',date('Y-m-d'))
->first();
答案 0 :(得分:0)
首先。您可以使用Laravel配件
public function getHasEncuestasAttribute()
{
return $this->encuesta_pregunta != [];
}
当您执行$model->has_encuestas
时,如果关系不为空,它将变为true。
第二。使用关系方法has
或doesntHave
。如果要获取所有具有空关系的encuesta
,则可以调用Encuesta::doesntHave('encuesta_pregunta')
或没有空关系的对立Encuesta::has('encuesta_pregunta')
。