首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel where()在whereHas()中访问另一端表列

Laravel where()在whereHas()中访问另一端表列
EN

Stack Overflow用户
提问于 2019-11-07 15:16:25
回答 1查看 246关注 0票数 0

很抱歉标题太乱了,我不知道该如何描述它。所以我得到了三个表tables in re model:学生,组,以及与它们相关的称为课程的表。

我正在尝试获取每个没有分配组的“学生”,或者分配了一个大于2019年的组的“学生”,到目前为止,我得到了这个代码,但我无法访问年份列,我尝试了" with ()“方法,但我没有得到任何幸运,有什么想法吗?我在laravel上的模型:

学生:

代码语言:javascript
复制
public function courses()
{
    return $this->hasMany(\App\Models\Course::class, 'id_student');
}

组:

代码语言:javascript
复制
public function courses()
    {
        return $this->hasMany(\App\Models\Course::class, 'id_group');
    }

课程:

代码语言:javascript
复制
public function student()
    {
        return $this->belongsTo(\App\Models\Student::class, 'id_student');
    }

public function group()
{
    return $this->belongsTo(\App\Models\Group::class, 'id_group');
}

我的问题是:

代码语言:javascript
复制
$students_noassigned = Student::whereHas('courses', function ($query) {
            $query->where('year', '>', 2010);
        })
            ->doesntHave('courses', 'or')
            ->get();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 15:22:22

如果您不想通过pivot在学生和组(属于多个)之间直接设置关系,您可以尝试以下操作:

代码语言:javascript
复制
$students_noassigned = Student::whereHas('courses.group', function ($query) {
    $query->where('year', '>', 2010);
})->orDoesntHave('courses')->get();

获取课程组为year > 2010的学生,或者没有任何课程,没有分配组的学生。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58743699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档