Моя проблема в том, что я пытаюсь установить взаимосвязь между постами и жанром.Вот что я сделал до сих пор.
class Post extends Model
{
public function genres()
{
return $this->belongsToMany('App\Genre');
}
}
class Genre extends Model
{
public function posts()
{
return $this->hasMany('App\Post');
}
}
жанр Таблица
+----+--------+
| id | name |
+----+--------+
| 1 | News |
| 2 | Sports |
+----+--------+
стол сообщений
+----+----------------+
| id | title |
+----+----------------+
| 1 | Political News |
| 2 | Sport Update |
+----+----------------+
genre_post стол
+----+---------+----------+
| id | post_id | genre_id |
+----+---------+----------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
+----+---------+----------+
Когда я пытаюсь получить доступ к списку жанров сообщения, все работает нормально.
Post::where('slug', '=', $id)->with("genres")->first(); // no problem
Но когда я попробовал обратное, это не работает.
$posts = Genre::where( "slug", "=", $id )->with("posts")->first();
Я получаю следующееошибка.
Столбец не найден: 1054 Неизвестный столбец 'post.genre_id' в 'выражении where' (SQL: выберите * из post
, где post
. genre_id
Я понимаю, что laravel пытается получить доступ к столбцу genre_id
из таблицы post
, которого не существует, поскольку это отношение многих ко многим, что означает, что один пост может содержать более одного жанра, а один жанр может содержать болееодин пост.
Есть идеи, как мне решить эту проблему?