Как получить эти данные - PullRequest
       4

Как получить эти данные

0 голосов
/ 14 сентября 2018

Значения извлечения являются отдельными и не дублируются

эта таблица моей базы данных

Когда она извлекается, она выглядит следующим образом

Когда он извлекается, он выглядит следующим образом

Я хочу быть таким

введите описание изображения здесь

Пожалуйста, примените к этомупример

<div class="scrolling menu">
 @foreach($genres as $genre)
   <a href="{{ url('cinema/movies/genre/'.$genre->genre) }}" class="item">{{ $genre->genre }}</a>
 @foreach
</div>

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

«Достаточно хорошо» Ответ:
Если вы просто пытаетесь решить проблему и ничего более, то вы можете использовать некоторые легкодоступные функции PHP, такие как explode и trimчтобы помочь вам.

 @php $trackedGenres = array(); @endphp
 @foreach($genres as $genre)
   @php $splitGenres = explode(",", $genre->genre); @endphp
   @for ($i = 0; $i < count($splitGenres); $i++)
      @php $thisGenre = trim($splitGenres[$i], " "); @endphp
      @if (!in_array($thisGenre, $trackedGenres))
          @php $trackedGenres[] = $thisGenre; @endphp
          <a href="{{ url('cinema/movies/genre/'.$thisGenre) }}" class="item">{{ $thisGenre }}</a>
      @endif
   @endfor
 @foreach

Лучший ответ:
Если у вас есть контроль над схемой базы данных, я бы рекомендовал создать отдельную таблицу для хранения нормализованных значений жанра, таких какthis:

CREATE TABLE Genre
(
   ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   NAME VARCHAR(255) NOT NULL,
   DESCRIPTION VARCHAR(512) NOT NULL
);

Затем создайте таблицу MovieGenre для связи фильмов с жанрами, которая будет выглядеть примерно так:

CREATE TABLE MovieGenre
(
   MovieId INT UNSIGNED NOT NULL,
   GenreId INT UNSIGNED NOT NULL,
   PRIMARY KEY(MovieId, GenreId),
   FOREIGN KEY (MovieId) REFERENCES cinema_movie(id),
   FOREIGN KEY (GenreId) REFERENCES genre(id)
);

Очевидно, с отдельной таблицей жанров (и активным классом записи,Полагаю) вы сможете получить уникальный список жанров.Тогда вам просто нужно установить has_many в вашем классе Movie, и вы сможете привязать все жанры к конкретному фильму.

0 голосов
/ 14 сентября 2018

Я бы решил это правильно с PHP + MySQL, прежде чем выводить в HTML.Вам придется использовать PDO или любую другую оболочку базы данных, которую вы используете.По сути, вам нужен этот запрос:

SELECT DISTINCT genre FROM cinema_movies

Сохраните его в переменной (массиве) с именем $rows;

Затем выполните цикл и создайте уникальный список

$categories = [];

foreach ($rows as $r) {
  $categories = array_merge($categories, explode(", ", $r));
}

$unique_cats = array_unique($categories)
0 голосов
/ 14 сентября 2018

Вы можете использовать следующее решение для решения вашей проблемы:

@foreach($genres as $genre)
    <a href="{{ url('cinema/movies/genre/'.$genre->genre) }}" class="item">
        @if($trimmed = explode(',', $genre->genre, 2))
            {{ $trimmed[0] }}
        @endif
     </a>
@foreach

И вам также придется освещать ситуацию, если жанр пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...