将从DB获取的数据转换为laravel中的数组

时间:2017-09-09 05:57:29

标签: php database laravel

我从表'拍卖'中获取数据

$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获取的数据转换为数组。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

Laravel查询构建器select方法返回Collection类型的变量。每个成员都是st​​dclass类型。

Collection有一个toArraye成员:

toArray()

注意这个函数返回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]);

希望它有所帮助。