首頁 > 後端開發 > php教程 > 如何在 Laravel 雄辯的 `with()` 函數中選擇特定列?

如何在 Laravel 雄辯的 `with()` 函數中選擇特定列?

Linda Hamilton
發布: 2024-12-16 00:41:16
原創
924 人瀏覽過

How to Select Specific Columns in Laravel's Eloquent `with()` Function?

在Eloquent 的「With()」函數中指定特定列

利用Laravel 的Eloquent ORM 中的「with()」函數從多個表中取得相關資料時,您可能會遇到只需要第二個表中的特定列的情況。本文深入探討如何在不借助查詢產生器的情況下實現此目的。

考慮這樣的場景:您有兩個表“User”和“Post”,它們之間具有一對多關係。在您的User 模型中,您定義與Post 模型的「hasMany」關係:

public function post()
{
    return $this->hasmany('post');
}
登入後複製

同樣,在Post 模型中,您與User 模型建立「belongsTo」關係:

public function user()
{
    return $this->belongsTo('user');
}
登入後複製

但是,當您使用「with()」函數連接這兩個表時,您可能會注意到它預設選擇第二個表中的所有欄位。假設您只想從“User”表中檢索特定列,例如“id”和“username”。以下程式碼片段還不夠:

Post::query()
    ->with('user')
    ->get();
登入後複製

要實現您的目標,您可以傳遞一個閉包函數作為傳遞給「with()」函數的數組的第二個索引:

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()
登入後複製

此閉包可讓您指定從第二個表中檢索哪些欄位。在這種情況下,它只會從“User”表中選擇“id”和“username”列。

注意:如答案中所提到的,主鍵(「id」 " 在這種情況下)必須是$query->select() 方法中的第一個參數,以確保正確的結果檢索。

以上是如何在 Laravel 雄辯的 `with()` 函數中選擇特定列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板