【问题标题】:Laravel seeder not workingLaravel 播种机不工作
【发布时间】:2016-06-13 20:50:38
【问题描述】:

谁能看出我的播种机有什么问题?

public function run()
{
    $faker = Faker\Factory::create();
    $limit = 30;

    $userId = App\User::all()->lists('id')->toArray();
    $status = App\OrderStatus::all()->lists('id')->toArray();


    for ($i = 0; $i < $limit; $i++) {
        $chosenUserId = $faker->randomElement($userId);
        $user = App\User::find($chosenUserId);

        DB::table('orders')->insert([
            'created_at' => $faker->date('Y-m-d'),
            'user_id'    => $chosenUserId,
            'status_id'  => $faker->randomElement($status),
            'draft'      => false,
            'address_id' => $user->addresses->first()->id
        ]);
    }
}

我不断收到trying to get property of non-object 错误,我想这是因为我附加address_id 的最后一行。

当我查看在此之前创建的数据库时,用户和地址都创建得很好,并且每个用户都有一个分配给他的地址。

在用户模型中我有:

public function addresses()
{
    return $this->hasMany('App\Address');
}

【问题讨论】:

    标签: php laravel seeding


    【解决方案1】:

    这里:

    addresses -> addresses()
    

    【讨论】:

      【解决方案2】:

      由于您的 User 模型具有定义与地址模型的关系的函数,因此您应该将其称为函数而不是对象属性:

          DB::table('orders')->insert([
              'created_at' => $faker->date('Y-m-d'),
              'user_id'    => $chosenUserId,
              'status_id'  => $faker->randomElement($status),
              'draft'      => false,
              'address_id' => $user->addresses()->first()->id
          ]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-05
        • 2022-11-27
        • 2015-08-26
        • 1970-01-01
        • 2023-01-12
        • 2018-12-27
        相关资源
        最近更新 更多