首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel:按教育水平获得多项教育的用户

Laravel:按教育水平获得多项教育的用户
EN

Stack Overflow用户
提问于 2018-11-27 10:20:49
回答 2查看 206关注 0票数 0

我的数据库中有默认的laravel users表和自定义的educations表。在educations表中,用户可以保存教育历史记录。

示例educations数据:

代码语言:javascript
运行
复制
------------------------------------------------------------
id | user_id | university | speciality | finish_year | level
------------------------------------------------------------
 1 |   16    |   Boston   |  Developer |    2018     |   4 
------------------------------------------------------------
 2 |   10    |   Sinergy  |   Designer |    2014     |   4 
------------------------------------------------------------
 9 |   16    |   Sinergy  |  Economist |    2010     |   8 
------------------------------------------------------------

现在,我如何才能让用户使用拉拉雄辩的教育水平?

例如,获得教育级别== 4的用户

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-27 12:46:46

考虑到用户模型中有一个表示educations关联的HasMany方法,您可以使用雄辩的has (或whereHas)方法:

代码语言:javascript
运行
复制
$users = App\User::whereHas('educations', function ($query) {
    $query->where('level', 4);
})->get();

这是到文档的链接。

票数 1
EN

Stack Overflow用户

发布于 2018-11-27 10:25:43

如果您的关系设置正确,那么在您的User模型中应该有如下内容:

代码语言:javascript
运行
复制
public function educations() {
    return $this->hasMany(Education::class);
}

然后,简单的使用如下:

代码语言:javascript
运行
复制
User::with(['educations' => function($query) {
    $query->where('level', 4);
}])->get()->filter(function($user) {
    return $user->educations->count() > 0;
});

相反的办法是:

代码语言:javascript
运行
复制
Education::with('user')->where('level', 4)->get();

这将给出级别为4的教育的列表,以及分配给它的每个用户。

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

https://stackoverflow.com/questions/53497455

复制
相关文章

相似问题

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