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

时间:2016-10-13 10:37:44

标签: laravel-5 eloquent

我有2个模特:作者和帖子

在我的Post模型中,我有一个作者功能(One To Many(Inverse)):

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();

我得到的是一个空作者的名字栏。

我错了什么?

2 个答案:

答案 0 :(得分:4)

请尝试:

library(tidyverse)
yq('1992-4')
str(yq('1992-4'))

parse_date_time('1992-4',orders = "Yq")
parse_date_time('1992-4',orders = "%Y%q")

[1] "1992-10-01"
Date[1:1], format: "1992-10-01"
[1] "1992-10-01 UTC"
[1] "1992-10-01 UTC"

有了这个,你就能得到:

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

您可以使用迭代或其他代替first()进行导出。

答案 1 :(得分:1)

从Laravel 5.5开始,您可以使用eager loading只需使用字符串即可检索多个特定列

Post::with('author:id,name')->get()

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

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