首页 > 解决方案 > 仅获取使用 with、Laravel 的 ID

问题描述

我想从 获取所有 ID with,目前我获取所有数据(id、、、namepivot

$teacher = Teacher::where('id', $id)->with(['subjects' => function($q) {
      $q->select('id')->value('id');
}])->orderByDesc('id')->first();

我试过了:

$q->pluck('id')->all();
$q->pluck('id');
$q->get('id');
$q->value('id');
$q->pluck('id')->all();

在最终结果我只idee ids 数组[1, 2, 3]

标签: laravellaravel-8

解决方案


从相反的角度来看,这个查询很可能要容易得多。IE 如果您只在特定教师下的那些科目的 ID 之后,请从科目表中获取,而不是教师级别的子查询。

对于简单的关系,例如:

$subject_ids = Subject::where('teacher_id', $id)->pluck('id');

或者,如果它是一个完整的枢轴关系,您可以转到表本身,类似于:

$subject_ids = \DB::table('subject_teacher')->where('teacher_id', $id)->pluck('subject_id');

最后一个示例在您如何设置方面做了很多假设,但希望能让您了解如何使用更简单的查询来完成此操作。

HTH


推荐阅读