【发布时间】:2018-10-11 20:13:00
【问题描述】:
我正在尝试重写此 SQL 查询,但我被困在这一点上
该查询旨在通过使用仅加入最新条目的子查询将项目表连接到 project_progress 表
SELECT * FROM projects
JOIN project_progress ON project_progress.id =
(
SELECT id FROM project_progress
WHERE project_progress.project_id = projects.id
ORDER BY project_progress.created_at DESC
LIMIT 1
)
WHERE project_progress.next_action_date < NOW()
AND projects.status != 'Complete'
AND projects.member_id = 1
ORDER BY projects.title ASC
收件人:
$projects = App\Project::where('member_id', 1)
->join('project_progress', function ($join) {
$join->on('project_progress.id', '=', function ($query) {
$query->select('project_progress.id')
->from('project_progress')
->where('project_progress.project_id', 'projects.id')
->orderBy('project_progress.created_at', 'desc')
->limit(1);
});
})
->where('project_progress.next_action_date', '<', Carbon\Carbon::now())
->notCompleted()
->orderBy('projects.project_title', 'asc')
->get();
我认为这行有些问题,但我不知道该怎么写
$join->on('project_progress.id', '=', function ($query) {
ErrorException (E_ERROR) strtolower() 期望参数 1 是字符串,对象给定 \vendor\laravel\framework\src\Illuminate\Database\Grammar.php
【问题讨论】:
-
“我认为这行有问题”为什么会出现错误?还是返回了错误的结果?可以使用
->toSql()函数查看生成的SQL -
ErrorException (E_ERROR) strtolower() 期望参数 1 是字符串,对象给定 \vendor\laravel\framework\src\Illuminate\Database\Grammar.php
标签: php mysql sql laravel eloquent