首页 > 解决方案 > 如何从急切加载中指定我们想要的列

问题描述

我正在使用 Beyondcode/laravel-comments ( https://github.com/beyondcode/laravel-comments ),并尝试指定我想从评论员那里获得的列。这是代码:

$comment = $post->comments()->with('commentator', function ($query) {
        $query->select('commentator.name', 'commentator.email');
        //or $query->select('users.name', 'users.email');
})->latest();

我收到错误消息

Undefined table: 7 ERROR:  missing FROM-clause entry for table "commentator" // or users

我该如何解决?谢谢

标签: phplaraveleloquenteloquent-relationship

解决方案


与文档中一样,只需像这样进行急切加载即可指定列,不需要任何功能:

$comment = $post
    ->comments()
    ->with('commentator:id,name,email')
    ->latest();

如果您确实需要使用回调来更改急切加载,则必须使用文档中所示的数组:

$comment = $post
    ->comments()
    ->with([
        'commentator' => fn ($q) => $q->select('id', 'name', 'email')
    ])
    ->latest();

推荐阅读