Добрый день. Столкнулся с такой ситуацией.
Есть таблица автомобилей в которой есть id марки и id клиента и название самого автомобиля. Все сохраняет в базу отлично но при выводе этого всего добра, если 2 строки в базе имеют одинаковые id марки и клиента, при попытке получить имя марки и имя клиента.
миграция
Schema::create('cars', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->unsignedInteger('model_id');
$table->foreign('model_id')->references('id')->on('model')->onDelete('cascade');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
Модель
protected $fillable = ['title', 'user_id', 'car_id'];
public function users()
{
return $this->hasMany(User::class, 'id');
}
public function models(){
return $this->hasMany(Model::class, 'id');
}
Controller
public function store(Request $request)
{
$car = Car::create([
'title' => $request->title,
'user_id' => $request->user,
'model_id' => $request->publisher
]);
return redirect(route('all_cars'));
}
View
@foreach($cars as $index => $car)
<tr scope="row">
<td>{{ $index + 1 }}</td>
<td>{{ $car->title }}</td>
<td>{{ $car->models->first()->title }}</td>
<td>{{ $car->users->first()->name }}</td>
</tr>
@endforeach
База
id | title | model_id | user_id
1 | a | 1 | 1
2 | b | 2 | 2
3 | c | 3 | 3
4 | d | 3 | 3
В итоге все имена марок и пользователя выводятся вплоть до 3 на четвертой я получаю null