我想从数据库中获取行,将它们转换为数组,然后添加一个自定义行,这样我就可以将整个内容传递给视图(Blade文件)。我尝试使用->push()
,但似乎无法获得匹配的数组格式。下面的代码示例获取包含用户ID,名称和位置的行。
$profiles = \App\Profiles::orderBy('created_at', 'DESC')->get();
在这里,我想将“距离”附加到集合中的每个条目上。我希望从数据库中获取自定义信息,以便可以将其无缝传递到视图(刀片文件)。
答案 0 :(得分:0)
$profiles
是一个雄辩的集合,而不是数组。
$profiles = Profiles::latest()->get();
foreach ($profiles as $profile) {
$profile->distance = 'your value';
}
return view('profile', compact('profiles');
答案 1 :(得分:0)
您可以遍历数组并按如下所示插入数据:
$profiles = \App\Profiles::orderBy('created_at', 'DESC')->get();
foreach ($profiles as &$profile) { // loop by reference so it will update current array
$profile->distance = "Your Value";
}
然后,您可以将此数组传递给视图。希望对您有帮助。
答案 2 :(得分:0)
您得到一个Collection实例,那么为什么不使用它的一种有用方法呢?在这种情况下,Map():
map()
map
方法遍历集合并将每个值传递给给定的回调。回调可以自由修改 项并返回它,从而形成一个新的修改项集合:$collection = collect([1, 2, 3, 4, 5]); $multiplied = $collection->map(function ($item, $key) { return $item * 2; }); $multiplied->all(); // [2, 4, 6, 8, 10]
所以在您的情况下:
$profiles = \App\Profiles::orderBy('created_at', 'DESC')->get();
$profiles->map(function ($profile) {
$profile->distance = 'your value';
return $profile;
});
// Then return it to your view
return view('profiles')->withProfiles('profiles'));
当然,您可以内联所有这些内容:
$profiles = \App\Profiles
::orderBy('created_at', 'DESC')
->get()
->map(function($profile) {
$profile->distance = 'your value';
return $profile;
});
// Then return it to your view
return view('profiles')->withProfiles('profiles'));
您说:
我基本上希望将数据库中的信息和我的自定义信息合二为一 数组,以便我可以轻松地将其传递给视图。
如果您希望自定义/格式化数据以使其返回视图,为什么不使用Eloquent Resources?查看文档的this section。
答案 3 :(得分:0)
使用“ get()”从数据库中获取数据时,它是对象的集合。现在如何处理它。
$profiles = \App\Profiles::orderBy('created_at', 'DESC')->get()->toArray();
$collect = []; //empty array to collect custom data
foreach ($profiles as $profile) {
$profile["distance"] = "Your data";
$collect[] = $profile;
}
现在,您可以在视图文件中传递“ $ collect”数组