代码:
public function getPosts(){
$posts = Post::with('meta','taxonomies.terms.termMeta')
->where('post_type','service')
->orderBy('post_name')
->get()
->keyBy('ID')
->toArray();
return $posts;
}
问题:
KeyBy()适用于您想要更改实体(例如:帖子)键但如何更改相关实体键ex:我想使用 meta_key <关键帖子相关元 /强>
答案 0 :(得分:0)
您可能需要transform()
每个帖子并调用keyBy()
方法。
public function getPosts(){
$posts = Post::with('meta','taxonomies.terms.termMeta')
->where('post_type','service')
->orderBy('post_name')
->get()
->transform(function ($post) {
$meta = $post->meta;
$post->meta = $meta->keyBy('meta_key');
return $post;
})
->keyBy('ID')
->toArray();
return $posts;
}
答案 1 :(得分:0)
代码1:不起作用,我注意到你可以改变$ post而不是相关实体(例如:meta):
->transform(function ($post) {
$meta = $post->meta;
$post->meta = $meta->keyBy('meta_key');
return $post;
})
代码2:工作但它只返回没有帖子信息的元数组
->transform(function ($post) {
$meta = $post->meta;
$post->meta = $meta->keyBy('meta_key');
return $post->meta;
})