[Laravel 5.7] У меня есть отношение между двумя объектами (Пользователь, Голоса) как отношение «многие к одному», и оно не работает в моем проекте.
Миграция пользователей:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('n_name');
$table->string('n_photo');
$table->string('n_gender');
});
Миграция голосов:
Schema::create('voices', function (Blueprint $table) {
$table->increments('id');
$table->string('voice');
$table->integer('n_id')->unsigned();
$table->foreign('n_id')->references('id')
->on('users')->onDelete('cascade');
});
Пользователи Модель:
class User extends Model
{
public function voices(){
return $this->hasMany(Voice::class);
}
}
Модель Голоса:
class Voice extends Model
{
public function user(){
return $this->belongsTo(User::class, 'n_id');
}
}
И функция «index» в моем контроллере, как показано ниже:
public function index()
{
$user= User::all();
$voices = $user->voices()::get(); -- error <described below>
return view('index', compact('user', 'voices'));
}
когда я хочу получить голоса для каждого пользователя, мне выдается ошибка:
«Метод Illuminate \ Database \ Eloquent \ Collection :: voices не существует.»
Мой взгляд выглядит так:
@if($n->voices)
@foreach($n->voices as $voice)
<audio controls src="voices/{{$voice->voice}}"></audio><br/>
@endforeach
@endif
Я надеюсь, что я объяснил проблему очень хорошо, и я жду решения.