同一模型 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 多对多关系

1 个函数模型 Laravel 中的 2 个序列查询更新

用于 Laravel Nova 中同一模型上的两个资源字段的 relatableQuery()

Laravel 急切加载多个模型,它们都在同一个表中

Laravel 多对多(在同一个用户表/模型上):查询范围以包含指定用户的相关信息

Laravel 4.1 多对多关系和条件在哪里?