簡體   English   中英

如何通過雄辯的Laravel 5.2從表中返回最高ID值

[英]How to return highest id value from a table via join with eloquent Laravel 5.2

我有兩個表共享一個關系用戶和日志表。 我正在嘗試查詢用戶表並從具有最高ID值的日志中獲取記錄

到目前為止,這是我返回重復條目的內容:

  $students = User::with([
        'course' => function ($query) {
            $query->get(['id', 'name']);
        }
    ])
        ->join('log', 'users.id', '=', 'log.user_id')
        ->where('log.event', 1)
        ->orderBy('log.id', 'desc')
        ->where('users.verified', 1)
        ->get(['users.*', 'log.id AS logid']);

理想情況下,我希望從日志表中為每個用戶最后插入一條記錄

groupBy('user_id')

返回第一條記錄

我認為您非常接近,只需要使用limit即可

  ->where('users.verified', 1)
  ->take(1) // add this to get only a single record
  ->get(['users.*', 'log.id AS logid']);

在沒有groupBy情況下嘗試以下1種解決方案

$students = User::with([
    'course' => function ($query) {
        $query->get(['id', 'name']);
    }
])
->join('log', 'users.id', '=', 'log.user_id')
->where('log.event', 1)
->orderBy('log.id', 'desc')
->where('users.verified', 1)
->where('log.id',DB::raw("SELECT MAX(id) FROM log WHERE log.user_id = users.id")) // get the max id value
->get(['users.*', 'log.id AS logid']);
    $students = User::with([
        'course' => function ($query) {
            $query->get(['id', 'name']);
        }
    ])
        ->join('log', 'users.id', '=', 'log.user_id')
        ->where('log.event', 1)
        ->whereRaw('log.id = (select max(`id`) from log where `user_id` = users.id )')
        ->where('users.verified', 1)
        ->get(['users.*', 'log.id AS logid', 'log.user_id']);

暫無
暫無

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

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