簡體   English   中英

Laravel 5.4:在Laravel Eloquent中轉換原始SQL查詢

[英]Laravel 5.4: Converting a raw SQL query in Laravel Eloquent

我正在嘗試重寫此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

使用where()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM