【问题标题】:Laravel Eloquent - Select Certain Columns Combine with Eager LoadingLaravel Eloquent - 选择某些列并结合 Eager Loading
【发布时间】:2018-01-10 19:27:13
【问题描述】:

如何在预加载查询时选择父表上的某些列?

$accounts = \App\Account::with('status')->get();

返回

[{"id":1,"username":"kuhn.desiree","email":"quentin.gleason@example.net","last_login":"2009-04-02 23:21:20","created_at":"2017-07-15 19:07:03","updated_at":"2017-07-15 19:07:03","status_id":13,"status":{"id":13,"name":"ab","desc":"Quos quas.","created_at":"2017-07-15 19:07:01","updated_at":"2017-07-15 19:07:01"}}]

我只想要Account 表上的usernameemail

【问题讨论】:

    标签: php laravel eloquent laravel-5.4 eager-loading


    【解决方案1】:

    尝试使用此代码:

    $accounts = \App\Account::with(['status' => function($q)
                {
                    $q->select('username', 'email');
                }])->get();
    

    【讨论】:

    • 据我所知,此代码仅过滤子表。
    【解决方案2】:

    一种方法是使用select() 方法

    $accounts = \App\Account::with('status')->select('username', 'email','status_id')->get();
    

    如果您想检索包含单个列的值的集合,您可以使用 pluck 方法。:

    accounts = \App\Account::with('status')->pluck('username', 'email');
    

    【讨论】:

    • 我试过但不幸的是它返回空状态。 {"username":"kuhn.desiree","email":"quentin.gleason@example.‌​net","status":null}
    • @YosuaLijantoBinar 检查此select('username', 'email','status')
    • 很好,请用$accounts = \App\Account::with('status')->select('username', 'email', 'status_id')->get(); 更新您的答案,我会接受。
    • 老兄它需要status_id 而不是status
    【解决方案3】:

    你想添加一个选择调用:

    $accounts = \App\Account::with('status')->select('username', 'email')->get();
    

    【讨论】:

    • 我试过但不幸的是它返回空状态。 {"username":"kuhn.desiree","email":"quentin.gleason@example.net","status":null}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2018-08-03
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多