Я изучаю laravel, но у меня возникла проблема, и я не могу понять ее правильно. У меня две модели:
Модель «Группа»:
Schema::create('groups', function (Blueprint $table) {
$table->increments('id')->unique();
$table->string('name')->unique();
$table->text('description')->nullable();
$table->string('picture')->nullable();
$table->timestamps();
});
и модель «Пользователь»:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email')->unique();
$table->string('password');
$table->timestamp('email_verified_at')->nullable();
$table->timestamps();
$table->rememberToken();
});
Эти модели должны иметь функцию «многие ко многим». отношения, поэтому я создал сводную таблицу с именем 'group_user':
Schema::create('group_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('group_id')->unsigned();
$table->foreign('group_id')->references('id')->on('groups')->onDelete('cascade');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
Затем я определил отношение «многие ко многим»:
В модели «Группа»:
public function members()
{
return $this->belongsToMany('App\User', 'group_user', 'group_id', 'user_id')->withTimestamps();
}
В модели «Пользователь»:
public function groups() {
return $this->belongsToMany('App\Group', 'group_user', 'user_id', 'group_id')->withTimestamps();
}
В моей базе данных у меня есть сводная запись, которая связывает группу 1 с пользователем 1:
+----+----------+---------+------------+------------+
| id | group_id | user_id | created_at | updated_at |
+----+----------+---------+------------+------------+
| 1 | 1 | 1 | NULL | NULL |
+----+----------+---------+------------+------------+
Итак пока все хорошо, но когда я пытаюсь распечатать членов группы 1:
@foreach($group->members() as $user)
<p>{{ $user->first_name }}</p>
@endforeach
, я получаю эту ошибку:
Trying to get property 'first_name' of non-object
Когда я печатаю объект пользователя, подобный этому
@foreach($group->members() as $user)
<p>{{ $user }}</p>
@endforeach
Я получаю результат 1 , который является user_id члена. Кто-нибудь может указать, где я напортачил? Я смотрел на это часами, но просто не вижу. Заранее спасибо!