Я хочу заполнить таблицу списками предложений автомобилей с фиктивными данными.
Особенность в том, что я хочу, чтобы марка и модель были из таблицы, уже созданной в базе данных. Также название листинга должно быть Делать и Модель. Мой код такой, но я предполагаю, что это совершенно неверно:
public function definition()
{
$id = DB::table('cars')->select('id')->inRandomOrder()->first();
$make = DB::table('cars')->where('id', $id)->select('make')->first();
$model = DB::table('cars')->where('id', $id)->select('model')->first();
return [
'title' => $make . " " . $model,
'make' => $make,
'model' => $model,
'year' => $this->faker->numberBetween(1950, 2021),
'slug' => $this->faker->word(),
];
}






Конструктор запросов в Laravel возвращает объект, представляющий модель базы данных, когда вы выполняете выборку с помощью first().
Вы должны получить доступ к атрибутам, когда устанавливаете их как другие атрибуты модели.
return [
'title' => $make->make . " " . $model->model,
'make' => $make->make,
'model' => $model->model,
'year' => $this->faker->numberBetween(1950, 2021),
'slug' => $this->faker->word(),
];
Ответ выше только устраняет проблему в коде Текущий.
Правильная реализация - создать модели (если они еще не существуют) и связать их отношениями через внешние ключи, а затем соединить их вместе в сеялке.
Фабрика должна содержать только четкое и ясное определение поддельных данных.