Я внес некоторые изменения в структуру своей базы данных. БД была разработана с
Код: Выделить всё
belongsTo отношения. И теперь этоbelongsToMany отношения. Таким образом, теперь у ряда может быть больше связей, чем раньше. Раньше я сохранял «идентификатор жанра» для каждого$gameКод: Выделить всё
genre_idстолбец . И это сработало, но вызывало беспокойство: в моем случае игра может иметь много жанров.
[b]До изменения[/b] я мог выбирать жанр из раскрывающийся список и предварительно проверьте его.
@foreach($genres as $genre)
genre_id) == $genre->id ? 'selected' : '' }}>{{ $genre->genre }}
@endforeach
Код: Выделить всё
genres включен$gameКод: Выделить всё
{
"id": 12,
"title": "Mach Rider",
"slug": "mach-rider",
"console_id": 1,
"cover_image": "http://sdb3.test/storage/images/placeholder.png",
"description": null,
"deleted_at": null,
"created_at": "2017-04-21T07:40:22.000000Z",
"updated_at": "2021-03-15T10:04:24.000000Z",
"genres": [
{
"id": 36,
"genre": "Vehicular combat",
"description": null,
"created_at": "2020-12-12",
"updated_at": "2020-12-12",
"pivot": {
"game_id": 12,
"genre_id": 36
}
},
{
"id": 5,
"genre": "Racing",
"description": null,
"created_at": "2020-12-12",
"updated_at": "2020-12-12",
"pivot": {
"game_id": 12,
"genre_id": 5
}
}
]
}
Код: Выделить всё
old()Код: Выделить всё
in_array() иarray_intersectКод: Выделить всё
@foreach($genres as $genre)
pluck('genre'), $game->genres->pluck('genre')->toArray())) ? 'checked' : '' }}
>
{{ $genre->genre }} ({{ $genre->games_count }})
@endforeach
Код: Выделить всё
GameController@editКод: Выделить всё
public function edit(Game $game)
{
$this->authorize('update', $game);
$genres = Genre::withCount('games')->get();
return view('game.edit.index', compact('game', 'genres'));
}
Код: Выделить всё
old()Код: Выделить всё
belongsToManyЭто мои отношения:
Код: Выделить всё
App\GameКод: Выделить всё
public function genres(){
return $this->belongsToMany(Genre::class);
}
Код: Выделить всё
App\GenreКод: Выделить всё
public function games(){
return $this->belongsToMany(Game::class);
}
Код: Выделить всё
game_genreКод: Выделить всё
+----+----------+---------+------------+------------+
| id | genre_id | game_id | created_at | updated_at |
+----+----------+---------+------------+------------+
| 1 | 5 | 1 | 2020-12-12 | 2020-12-12 |
| 2 | 36 | 1 | 2020-12-12 | 2020-12-12 |
+----+----------+---------+------------+------------+
Код: Выделить всё
genresКод: Выделить всё
+----+------------------+-------------+------------+------------+
| id | genre | description | created_at | updated_at |
+----+------------------+-------------+------------+------------+
| 1 | Shooter | NULL | 2020-12-12 | 2020-12-12 |
| 2 | Platform | NULL | 2020-12-12 | 2020-12-12 |
| 3 | Beam em up | NULL | 2020-12-12 | 2020-12-12 |
| 4 | Puzzle | NULL | 2020-12-12 | 2020-12-12 |
| 5 | Racing | NULL | 2020-12-12 | 2020-12-12 |
| 6 | Simulation | NULL | 2020-12-12 | 2020-12-12 |
| 36 | Vehicular combat | NULL | 2020-12-12 | 2020-12-12 |
+----+------------------+-------------+------------+------------+
Источник: https://stackoverflow.com/questions/667 ... -in-a-form
Мобильная версия