我有一个包含灯和图像的数据库。他们有一对一的关系。目前,我从数据库中获取指示灯,并将响应发送到我的vue前端。
我的查询:
$correspondingLamps = Lamp::where(['fitting' => $fitting, 'dimmability' => $dimmable])
->where(function ($query) {
$query->where('light_color_code', '=', '2800K')
->orWhere('light_color_code', '=', '2700K');
})
->get();
我的答复:
foreach ($correspondingLamps as $lamp) {
$image = [
'lamp_id' => $lamp->image->lamp_id,
'path' => $lamp->image->path
];
array_push($images, $image);
}
return response()->json([
'images' => $images,
'lamps' => $correspondingLamps
]);
但是我认为这可以做很多“清洁”工作。是否有一种简单的方法来获取image_path
并将其传递给我的lamp
收藏夹?
答案 0 :(得分:1)
在Laravel中,您应该始终默认使用内置函数。 Laravel具有良好的序列化功能,请让Laravel处理。简便的方法是,急于使用with()
方法加载图像,它将自动与响应一起serialized。
return Lamp::where(['fitting' => $fitting, 'dimmability' => $dimmable])
->where(function ($query) {
$query->where('light_color_code', '=', '2800K')
->orWhere('light_color_code', '=', '2700K');
})->with('image')
->get();
这应该产生与此类似的结果。
[
{// your lamp object
"id": 1,
"image": {
"id": 1
"path": "some/path"
}
}
]
答案 1 :(得分:0)
只需放置网址路径
return response()->json([
'images' => url('public/your_folder_path/' . $images);
'lamps' => $correspondingLamps
]);