我试图通过控制器返回数据库中每一行的图像
public function getEmotions() {
$emotionsList = Emotions::all();
$images = DB::table('emotions')->select('image')->get();
return $images;
}
这将返回错误的UTF-8格式错误的字符,可能编码错误
我已经尝试过此方法
public function getEmotions() {
$emotionsList = Emotions::all();
$images = DB::table('emotions')->select('image')->get();
return utf8_encode($images);
}
但是这将返回错误方法Illuminate \ Support \ Collection :: __ toString()必须返回字符串值
我现在是一个人,但是一直坚持下去,谁能看到我要去哪里错了?
此数据也被传递到Vue文件,我要从中显示图像。我可以将其添加为{{motion.image}}吗?
<label v-for="emotion in emotions" class="cb-container">{{ emotion.em_name }}
<input name="emotions[]" type="checkbox" :value="emotion.id">
<span class="checkmark"></span>
</label>
答案 0 :(得分:1)
$ images = DB :: table('emotions')-> select('image')-> get();
Laravel提供的get()
方法返回 Illuminate\Support\Collection
类的实例。
根据定义
Illuminate \ Support \ Collection类提供了流畅,便捷的 包装器,用于处理数组数据。
重点是:您需要像分别遍历$ images var和utf8_encode
的每一行一样
foreach($images as $image) {
...
}
修改
您可以使用
public function getEmotions() {
$emotionsList = Emotions::all();
foreach($emotionsList as $emotion) {
$emotion->image = 'data:image/jpeg;base64,' . base64_encode( $emotion->image);
}
return $emotionsList;
}
用法
... v-for="emotion in emotions" ...
<img src="$emotion->image"/>
答案 1 :(得分:0)
您必须返回响应:
return response($images->toArray());
或者如果您希望将其编码为json:
return response()->json($images);