如何用雄辩的“ with”选择特定的列

sha*_*y.k 2 php laravel eloquent laravel-4.2

雄辩地使用“ with”时,有没有办法只选择特定的列?

我的问题是我的帐户列表很长,我还需要使用“ with”关系来获取其网站,但是“ websites”对象很大,这会使请求非常缓慢。

我尝试使用:

$accounts = $accounts->with('websites')->select(['account_id','url']);
Run Code Online (Sandbox Code Playgroud)

并且:

$accounts = $accounts->with('websites', function($query) {
                $query->select(['account_id','url']);
            });
Run Code Online (Sandbox Code Playgroud)

他们俩都没有工作。

我在他们的文档中没有找到答案,因此,如果有一种方法,如果有人与我分享,我将不胜感激。同样,如果有“ with”的替代方案也能带来相同的结果,那也将是一件很不错的事情。谢谢。

小智 6

$accounts = $accounts->with([
    'websites'  => function($query) {
        $query->select(['account_id','url']);
    }
]);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,实际上只有当在选择中包括链接两个表的外键(在with或outside,如果您从主表中选择特定列)中时,此方法才有效。如果缺少外键,则整个操作将静默失败(为“ with”表返回null),而没有任何提示是什么问题。 (4认同)