Кто-нибудь может увидеть, в чем проблема с моей сеялкой?
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');
}
Вот:
addresses -> addresses()
Поскольку в вашей пользовательской модели есть функция для определения связи с адресной моделью, вы должны вызывать ее как функцию, а не как атрибуты объекта:
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
]);