\App\Post :
function PostMeta(){ return $this->hasMany('App\PostMeta'); }Y mi consulta: (arrancar no funciona) -
Necesito usar menos consultas de base de datos
$query = \App\Post ::with(array('PostMeta'=>function($query){ $query->pluck('key','value'); })); $query->get(); Necesito obtener title_en , ¡pero no puedo usar arrancar aquí!
resuelto:
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'); }No puede hacer esto mientras está ansioso por cargar los datos, pero puede usar el método de recopilación con el mismo nombre pluck() en la vista al acceder a los datos de relación:
{{ $post->postMeta->pluck('value', 'key') }}En este caso, evitará el problema N+1 y obtendrá los datos en el formato que desee.
Actualizar
Dado que desea preparar datos para Vue, aquí hay un pequeño ejemplo de cómo podría iterar sobre la colección:
foreach ($posts as $post) { $post->meta = $post->postMeta->pluck('value', 'key'); unset($post->postMeta); }