php - laravel 查询关系检查数据是否存在
问题描述
我有这样的设置,
测验模型
public function scores()
{
return $this->hasMany('App\Score');
}
分数模型
public function quiz()
{
return $this->belongsTo('App\Quiz');
}
public function user()
{
return $this->belongsTo('App\User');
}
用户模型
public function scores()
{
return $this->hasMany('App\Score');
}
一些背景,如果用户还没有对所述测验的分数,则只能由用户玩测验,我想做的是,如果用户通过分数与测验有关系,我想停止该测验在查询中返回,这是我的尝试,
$quiz = Quiz::with('questions.answers')
->has('scores.user', 2)
->whereDate('date_playable', '=', $date)
->first();
但是,无论用户是否有分数,这都不会返回任何测验。谁能告诉我如何只返回用户当前没有得分的测验?
解决方案
您当前正在搜索任何用户得分不超过 2 的测验。
你需要的是whereDoesntHave代替:
$quiz = Quiz::with('questions.answers')
->whereDoesntHave('scores', function ($query) use ($user) {
$query->where('user_id', $user->id);
})
->whereDate('date_playable', '=', $date)
->first();
您要查询$user
的实例在哪里。App\User
推荐阅读
- c# - 通过 Windows 服务连接 SQL Server 2012
- regex - awk 无法拆分大文件 (10Gb+)
- node.js - 如何决定应将视频转码为哪些分辨率和比特率?
- r - 使用一个分组为线条着色,另一个分组使用“ggplot2”确定线条样式
- discord - REFRENCEERROR:嵌入未定义,我该怎么办?(不和谐.JS)
- javascript - 提供本地笑话模拟后立即禁用调试或运行单个测试
- c# - 使用 C# DownloadFile() 下载后损坏的 Excel 文件
- r - 使用 R 中的应用在几列上运行 cor.test 时出错
- python-3.x - 有没有办法在 discord.py-rewrite 中找到所有加载和卸载的 cog
- javascript - 使用 jQuery 在 Web 上更改元素