Laravel 5 Eloquent:选择关系的特定列

3

我有2个模型:作者和文章。

在我的文章模型中,我有一个作者函数(一对多(反向)):

public function author()
    {
        return $this->belongsTo('App\Author', 'author_id');
    }

现在我想将以下信息导出到Excel:
ID | 标题 | 作者名称
这是我的尝试:
$posts = Post::with(array(
        'author' => function ($query) {
            $query->select('name');
        }))->select('id', 'title')->get();

我拿到的是一个空的作者名称列。
我做错了什么?

尝试使用 get('id AS Id','title AS Title','authors.name AS Name') 而不是 ->select('id', 'title')->get(); - Rahul K Jha
2个回答

6
自 Laravel 5.5 版本起,您可以使用“渴望加载”功能,通过字符串简单地检索多个特定列。请参考Eloquent关联
Post::with('author:id,name')->get()

Author::with('posts:id,author_id,title')->get()

请注意必须包含id或外键author_id,否则数据将为空。

谢谢,关键点是我错过的外键。 - Nasser Ali Karimi

5

请尝试:

$posts = Post::with(['author' => function($query){
    $query->select(['id','name']);
}])->get(['id','title', 'author_foreign_key_in_posts_table']);

拥有这个功能,您将能够获得:

$posts->first()->author->name;
$posts->first()->id;
$posts->first()->title;

您可以使用迭代或其他方式来导出,而不是使用 first()。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接