Php 在雄辩的生成器实例上不存在Laravel 8种子属性[id]

Php 在雄辩的生成器实例上不存在Laravel 8种子属性[id],php,laravel,Php,Laravel,我正在为一位客户重建一个旧项目,并将其移至Laravel 8。我已经创建了所有模型,并将当前项目中的所有数据转换为json,这样我就可以将数据迁移为种子数据 我有一个Usercar模型,它与Car和User模型有belongsTo关系。我需要在播种过程中通过比较和匹配旧的id值来重新创建关系,以便创建新的记录和关系。我的所有种子程序都会成功运行,直到我到达**UsercarSeeder**,然后我得到一个属性[id]在雄辩的生成器实例上不存在的错误。我知道我错过了一些非常简单的事情。谢谢 数据库

我正在为一位客户重建一个旧项目,并将其移至Laravel 8。我已经创建了所有模型,并将当前项目中的所有数据转换为json,这样我就可以将数据迁移为种子数据

我有一个
Usercar
模型,它与
Car
User
模型有
belongsTo
关系。我需要在播种过程中通过比较和匹配旧的id值来重新创建关系,以便创建新的记录和关系。我的所有种子程序都会成功运行,直到我到达
**UsercarSeeder**
,然后我得到一个
属性[id]在雄辩的生成器实例上不存在的错误。我知道我错过了一些非常简单的事情。谢谢

数据库/data/cars.json

[
    {
        "old_car_id": 31,
        "start_year": 1955,
        "end_year": 1958,
        "model": "356  Carrera 1500 GS Coupe",
        "horse_power": 110,
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "first_name": "Charles",
        "last_name": "Smith",
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "old_car_id": 227,
        "car_color": "Gray",
        "year": 2015,
        "tire_points": 140,
...
数据库/data/users.json

[
    {
        "old_car_id": 31,
        "start_year": 1955,
        "end_year": 1958,
        "model": "356  Carrera 1500 GS Coupe",
        "horse_power": 110,
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "first_name": "Charles",
        "last_name": "Smith",
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "old_car_id": 227,
        "car_color": "Gray",
        "year": 2015,
        "tire_points": 140,
...
数据库/data/user cars.json

[
    {
        "old_car_id": 31,
        "start_year": 1955,
        "end_year": 1958,
        "model": "356  Carrera 1500 GS Coupe",
        "horse_power": 110,
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "first_name": "Charles",
        "last_name": "Smith",
...
[
    {
        "old_user_id": "4be7c3a7-d626-456a-83be-5d303bf90d02",
        "old_car_id": 227,
        "car_color": "Gray",
        "year": 2015,
        "tire_points": 140,
...
数据库/seeders/UsercarSeeder.php

<?php

namespace Database\Seeders;

use App\Models\User;
use App\Models\Car;
use App\Models\Usercar;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class UsercarSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $json = file_get_contents('database/data/user-cars.json');
        $data = json_decode($json);

        $user = User::where('old_user_id', 'old_user_id')->get();
        $car = Car::where('old_car_id', 'old_car_id')->get();

        foreach ($data as $obj) {
            Usercar::create(array(
                'user_id' => $user->id,
                'car_id' => $car->id,
...
方法返回一组模型。如果需要单个对象,则应使用
first()
方法

另外,
where()
的外观应该类似于:

->其中($column,$value)

看起来您传递了两次列名,这可能会返回一个空集合。

我真的不明白,但问题是
id
,我想在
'user\u id'=>$user->id
中,为什么在新表中有
旧用户id
?最好只有
id