我从表'拍卖'中获取数据
$players = DB::table('auction')->where('id',$id)->get();
我正在以这种形式获取数据
[
{
"id": 3,
"name": "Yogesh Singh",
"year": "BE",
"branch": "CE",
"division": "D",
"achievements": "College Cricket Team",
"base_price": 5000000,
"status": 1,
"manager": 0
}
]
现在我需要将这些数据转移到另一个表'团队'中,因此我做了
DB::table('team')->insert(['player_id' => $id, 'player_type' => $player->player_type, 'name' => $player->name, 'price' => $player->price]);
它会抛出一个错误,说明此集合实例上不存在Property [player_type]。
我很确定我无法将从DB获取的数据转换为数组。
我该怎么做?
答案 0 :(得分:2)
Laravel查询构建器select方法返回Collection类型的变量。每个成员都是stdclass类型。
Collection有一个toArraye成员:
注意这个函数返回2维数组。
另一种方法是使用collection->首先获取集合的第一个成员,并使用这种方法将此stdclass转换为数组:php stdClass to array
答案 1 :(得分:0)
这是因为$players
因使用collection
而返回get()
。将其更改为first()
,如果存在,将返回Model
个实例。变量名称也是$player
,而不是$players
$player = DB::table('auction')->where('id',$id)->first();
现在可以访问以下数据:
DB::table('team')->insert(['player_id' => $id, 'player_type' => $player->player_type, 'name' => $player->name, 'price' => $player->price]);
或强>
您可以保留get()
并访问以下数据:
DB::table('team')->insert(['player_id' => $id, 'player_type' => $player[0]->player_type, 'name' => $player[0]->name, 'price' => $player[0]->price]);
希望它有所帮助。