Как предварительно проверить флажки с отношением ownToMany в форме?Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 Как предварительно проверить флажки с отношением ownToMany в форме?

Сообщение Гость »


Я внес некоторые изменения в структуру своей базы данных. БД была разработана с

Код: Выделить всё

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
}
}
]
}
Вместо раскрывающегося списка уместнее было бы несколько флажков. Но я не могу заставить его работать с и предварительно проверив жанры. Я пробовал с

Код: Выделить всё

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'));
}
Итак, я прошу вашей помощи: как мне использовать с

Код: Выделить всё

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 |
+----+----------+---------+------------+------------+
Таблица

Код: Выделить всё

+----+------------------+-------------+------------+------------+
| 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»