在laravel中,DB上的get()方法返回一个stdObjs数组, 例如这一个:
$designers = DB::table('designers')->get();
将设计器表中的所有设计器作为stdObj数组返回。
现在我想用这样的东西手动创建一个stdObjs数组:
public function index()
{
$id = Auth::id();
$user = User::find($id);
foreach ($user->owned_item as $i) {
$result = new \stdClass();
$result->type => $i->Item_type->type,
$result->color => $i->Item_color->color
}
很明显,代码会在每个周期覆盖$ result obj,问题是,如何创建一个我需要的所有stdobj数组呢?
答案 0 :(得分:3)
在每个项目的循环执行结束之前,您需要将它们分配给数组。
$objs = [];
foreach (...) {
$obj = new \stdClass();
...
$objs[] = $obj;
}
在循环之后,$objs
变量包含一个包含在foreach循环内创建的对象的数组。
编辑:如果要为每个对象设置特定的数组键,可以使用
$objs[$key_here] = $obj;
将对象插入数组时。 $key_here
应该是字符串或整数。