\App\Post
:
function PostMeta(){
return $this->hasMany('App\PostMeta');
}
我的查询:(采摘不起作用) -
我需要使用较少的数据库查询
$query = \App\Post
::with(array('PostMeta'=>function($query){
$query->pluck('key','value');
}));
$query->get();
我需要title_en
,但我不能在这里使用!
解决:
function get_PostMeta(){
// print_r($this->relations['PostMeta']);
return $this->relations['PostMeta'];
}
$query = \App\Post::with('PostMeta')->get();
foreach ($query as $key => $post){
$post->meta = $post->get_PostMeta()->pluck('value', 'key');
}
答案 0 :(得分:2)
您无法在加载数据时执行此操作,但在访问关系数据时,您可以在视图中使用名称为pluck()
的收集方法:
{{ $post->postMeta->pluck('value', 'key') }}
在这种情况下,您将避免出现N + 1问题,并以您想要的格式获取数据。
<强>更新强>
由于您想为Vue准备数据,这里有一个关于如何迭代集合的小例子:
foreach ($posts as $post) {
$post->meta = $post->postMeta->pluck('value', 'key');
unset($post->postMeta);
}