我有一个BlogPost模型,它有一个名为images的belongsToMany关系,这个关系使用一个链接表将博客帖子ID与图片ID相关联。
在提取博客文章的数据时,images属性如下所示:
[images] => Array
(
[0] => Array
(
[id] => 8304
[original] => /img/blog/2017/5/wifiradio_original_59089cae673db.png
[large] => /img/blog/2017/5/wifiradio_large_59089cae673db.jpg
[medium] => /img/blog/2017/5/wifiradio_medium_59089cae673db.jpg
[small] => /img/blog/2017/5/wifiradio_small_59089cae673db.jpg
[name] => wifiradio.png
[alt] => wifiradio.png
[created_at] => 2017-05-02 14:50:22
[updated_at] => 2017-05-02 14:50:22
[pivot] => Array
(
[blog_post_id] => 47749
[image_id] => 8304
[id] => 136949
[type] => featured
)
)
)
)
数组键没有用作数值,我希望数组键是pivot-> type的值。
Laravels keyBy方法几乎可以满足我的需要,但我不能让它直接处理返回的数据。
是否可以在模型中使用keyBy,以便始终以可用的格式返回数据?
答案 0 :(得分:1)
我通过在控制器中格式化数组来解决这个问题。 这是我创建的函数,如果有人有类似问题:
public function formatPosts($posts){
foreach($posts as $post){
$images = collect($post->images);
unset($post->images);
$post->images = $images->keyBy('pivot.type');
}
return $posts;
}