Сеялка 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
]);
0

По вопросам рекламы [email protected]