我有以下代码
$tecnico = Tecnico::with('servicios')->where('Auth_Token',$auth)->firstOrFail();
if($tecnico != ''){
$servicios = $tecnico->servicios;
$servicio = $servicios->where('idServicio', $id);
}
Servicio
有很多 Tecnico
和 Tecnico
有很多 Service
在这种情况下,我只需要来自
Tecnico
的 Auth_token
稍后还需要来自该 Servicio
的所有 Tecnico
但通过 id
过滤当我运行上面的代码时出现以下错误Symfony \ Component \ Debug \ Exception \ FatalErrorException
Call to undefined method Illuminate\Database\Eloquent\Collection::where()
在
$servicio = $servicios->where('idServicio', $id);
中我该如何解决?
最佳答案
你可以试试这个:
$tecnico = Tecnico::with(array('servicios' => function($q) use ($id) {
$q->where('idServicio', $id);
}))->where('Auth_Token',$auth)->firstOrFail();
因此,您将获得相关
Tecnico
等于 Servicio->id
的 $id
模型,然后您可以使用 $tecnico->servicios->first()
来获取第一个 Servicio
并且如果集合中有多个 Servicio
(很可能不会),那么您可以使用foreach
循环(基本上在 view
中)。您可以在 Laravel
网站上查看有关 this aka Eager Load Constraints 的更多信息。关于php - 如何在 Laravel 中过滤集合?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23301108/