同一模型 Laravel 上的 2 个查询
Posted
技术标签:
【中文标题】同一模型 Laravel 上的 2 个查询【英文标题】:2 queries on the same model Laravel 【发布时间】:2021-11-19 11:22:55 【问题描述】:我想从 Course
表中获取所有行,其 userId
是 $userId
。从该列表中,我想选择具有id
字段值与输入值$id
相同的行。我尝试了下面的一个。它返回null
。有什么解决办法吗?
$course=Course::where('userId',$userId)->pluck('id');
$data=$course->where('id',$id)->first();
dd($data);
【问题讨论】:
你为什么不在第一个查询中使用 multi where$course=Course::where('userId',$userId)->where('id, $id)
@Yogendra 解决了这个问题。谢谢
或者最好在一个查询中使用它$course = Course::where([ ['userId','=',$userId], ['id,'=', $id] ])->first();
【参考方案1】:
您不应该使用“pluck”——它只是拉出指定的列来匹配记录,没有别的。因此,您的 $course 集合(即从您的第一行返回的内容)只是一个包含 ID 的集合,没有其他内容。
您可以将多个“where”子句链接在一起:
$course = Course::where('userID', $userID)->where('id', $id)->first();
dd($course);
【讨论】:
【参考方案2】:您可以使用简写,它可以让您在 where 方法中传入两个搜索参数。
$course = Course::where([
'id' => $id,
'userID' => $userID
])->first();
【讨论】:
以上是关于同一模型 Laravel 上的 2 个查询的主要内容,如果未能解决你的问题,请参考以下文章
用于 Laravel Nova 中同一模型上的两个资源字段的 relatableQuery()