Laravel 子查詢語句用法

sgm4231發表於2021-01-28
class UserController extends Controller
{
    public function index()
    {
        $columns = ['id', 'name', 'email', 'created_at'];
        $users = User::addSelect([
            'last_post_title' => Post::select(['title'])
                ->whereColumn('user_id', 'users.id')
                ->where('status', Post::STATUS_NORMAL)
                ->orderByDesc('created_at')
                ->limit(1)
        ])->orderByDesc('id')->paginate(20, $columns);
        return view('user.index', ['users' => $users]);
    }
}

addSelect 方法可用於新增一個查詢欄位到已存在的查詢例項,我們通過傳遞一個陣列 —— 陣列鍵是返回的查詢欄位名,即 SQL 語句中的 last_post_title,陣列值是對應的子查詢邏輯,注意外來鍵關聯需要通過 whereColumn 方法設定,其他和正常 Eloquent 查詢一樣。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章