从一个 table 获取行并将其插入另一个 Laravel

Get row from one table and insert it in other Laravel

我正在尝试使用 eloquent 方法将一个 table 中的一行插入到 Laravel 5.4 中的另一个,但我错过了一些东西。想不通...

这是我的代码:

public function change($id)
{
   $car = Old::find($id);
   unset($car['created_at'],$car['updated_at']);
   $clone = $car->replicate();
   New::create($clone);
}

Type error: Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array

您正在传递模型的一个实例,您必须传递一个数组,所以试试这个:

public function change($id)
{
   $car = Old::find($id);
   unset($car['created_at'],$car['updated_at']);
   $clone = $car->replicate();
   New::create($clone->toArray());
}

这是一种可能的方法

public function change($id)
{
 $car = Old::find($id);
 unset($car['created_at'],$car['updated_at']);
 $clone = $car->replicate();
 New::create(array($clone));
}

或者如果您知道这些值,您可以显式创建一个数组并在 New Model

中创建一个条目
New::create([
'name' => $clone->name,
'email => $clone->email,
...
]);