我有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();
我得到的是一个空作者的名字栏。
我错了什么?
答案 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
),否则数据将为空。