【问题标题】:Get only the IDs using with, Laravel仅获取使用 with、Laravel 的 ID
【发布时间】:2021-06-09 15:39:11
【问题描述】:

我想从with获取所有ID,目前我获取所有数据(idnamepivot等)

$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();

在最终结果中,我只需要一个 id 数组 [1, 2, 3]

【问题讨论】:

标签: laravel laravel-8


【解决方案1】:

很可能从相反的角度更容易得到这个查询。 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2020-04-04
    • 2014-01-31
    • 2013-11-20
    相关资源
    最近更新 更多