Php 寻找雄辩模型和相关模型

Php 寻找雄辩模型和相关模型,php,laravel,eloquent,model,Php,Laravel,Eloquent,Model,我需要通过id找到用户的目标 用户有很多目标 我不知道该怎么做,我想这个片段可能是这样的 $goal = User::find($userId)->goals()->find($id); 是否可以同时获取相关模型并对父模型进行筛选?您可以在加载关系时使用约束来限制相关记录,然后获取第一个记录 $goal=User::with(['goals'=>fn($query)=>$query->where('goals.id',$id)]) ->findOrFail($userId) ->目

我需要通过id找到用户的目标

用户有很多目标

我不知道该怎么做,我想这个片段可能是这样的

$goal = User::find($userId)->goals()->find($id);

是否可以同时获取相关模型并对父模型进行筛选?

您可以在加载关系时使用约束来限制相关记录,然后获取第一个记录

$goal=User::with(['goals'=>fn($query)=>$query->where('goals.id',$id)])
->findOrFail($userId)
->目标
->第一个();
//然后在继续之前,根据约束检查目标是否存在
如果($目标){
//做点什么
}
另一种选择是浏览
目标

$goal=goal::with('users')->findOrFail($id);
如果($goal->users->contains($id',$userId){
echo“id为{$userId}的用户具有给定的目标”;
//做点什么
}

当您已经有了目标的$id时-假设$id对应于目标表的主键,为什么需要遍历用户模型。您可以使用主键直接获取目标记录
$goal=goal::findOrFail($id)
我想确保目标属于UserPolicys,应该将其用于授权,而不是在查询中添加位!完美,正是我想要的!