【问题标题】:Laravel 5.4: Converting a raw SQL query in Laravel EloquentLaravel 5.4:在 Laravel Eloquent 中转换原始 SQL 查询
【发布时间】: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

【问题讨论】:

  • “我认为这行有问题”为什么会出现错误?还是返回了错误的结果?可以使用-&gt;toSql()函数查看生成的SQL
  • ErrorException (E_ERROR) strtolower() 期望参数 1 是字符串,对象给定 \vendor\laravel\framework\src\Illuminate\Database\Grammar.php

标签: php mysql sql laravel eloquent


【解决方案1】:

使用where():

$join->where('project_progress.id', '=', function ($query) {

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 2019-04-29
    • 2019-04-04
    • 2021-09-11
    • 2016-04-27
    • 2020-02-07
    • 2017-12-28
    • 2019-02-03
    • 2020-10-03
    相关资源
    最近更新 更多