Laravel:按教育程度吸引受过多次教育的用户

时间:2018-11-27 10:20:49

标签: laravel eloquent laravel-5.7

我的数据库中有默认的laravel data={[ [ 'Czas', 'Wszyscy', 'Rozwiazujacy', 'Uczniowie', // 'Admini', ], // return this.state.sortedForChart.map(ch => ch); this.state.sortedForChart[0], this.state.sortedForChart[1], ]} 表和自定义users表。用户可以在educations表中保存教育历史记录。

示例educations数据:

educations

现在如何才能按教育程度让用户熟练使用laravel?

例如,获得受教育程度== 4的用户

2 个答案:

答案 0 :(得分:1)

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

$users = App\User::whereHas('educations', function ($query) {
    $query->where('level', 4);
})->get();

这里是docs的链接。

答案 1 :(得分:0)

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

public function educations() {
    return $this->hasMany(Education::class);
}

那么一个简单的用法如下:

User::with(['educations' => function($query) {
    $query->where('level', 4);
}])->get()->filter(function($user) {
    return $user->educations->count() > 0;
});

相反的方法是:

Education::with('user')->where('level', 4)->get();

这将为您提供4级教育的列表,并为分配给它的每个用户提供教育。