2016-06-13 88 views
0

任何人都可以看到什么似乎是我的播种机的问题?Laravel播种机不工作

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'); 
} 

回答

0

这里:

addresses -> addresses() 
0

由于您的用户模型有一个函数定义与地址模式的关系,你应该把它作为一个功能不作为对象属性:

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 
    ]);