我想知道是否有人可以帮助我,因为我开始在这里感到沮丧...我有一个数据库表,其中包含与图像有关的信息。一列是'文件名'。检索完图像数组后,我想在数组中添加一个名为“filepath”的额外密钥,格式为'/path/to/images' . array[$i]['filename']
足够简单吧?但我似乎无法做到(没有使用一些荒谬冗长的代码)。这就是我所拥有的:
$array = DB::table('tour_images')->where('tour_id','=',$tourID)->get();
$images = $array;
$i = 0;
foreach($array as $img){
$images[$i]['filepath'] = '/upload/tour_images/' . $img['file_name'];
$i++;
}
但我得到'不能使用stdClass类型的对象作为数组'我想这是因为第一行代码返回对象而不是数组,对吗?所以我尝试使用:
$array = DB::table('tour_images')->where('tour_id','=',$tourID)->get()->toArray();
猜猜是什么,它不起作用。好的,有人现在帮助我,请...
编辑:从上面返回错误:'在非对象上调用成员函数toArray()'
答案 0 :(得分:0)
我个人只会使用这些对象。像那样:
$images = DB::table('tour_images')->where('tour_id','=',$tourID)->get();
foreach($images as $i => $img){
$images[$i]->src = '/upload/tour_images/' . $img->file_name;
}
您也可以将其转换为数组。 toArray()
不起作用,因为它是一个普通对象数组,但将其转换为数组应转换它。无论如何,您必须为结果集中的每一行执行此操作。
$results = DB::table('tour_images')->where('tour_id','=',$tourID)->get();
$images = array();
foreach($results as $result){
$img = (array) $result;
$img['filepath'] = '/upload/tour_images/' . $img['file_name'];
$images[] = $img;
}
答案 1 :(得分:0)
我认为$images
是一个数组,但$img
是一个stdClass
因此,您应该使用->
来引用它的属性
如下所示:
$images = DB::table('tour_images')->where('tour_id','=',$tourID)->get();
foreach($images as $img) {
$img->filepath = '/upload/tour_images/' . $img->file_name;
}