как использовать отношения с массивом в laravel - PullRequest
0 голосов
/ 01 марта 2020

привет, я создал сайт с laravel и. моя таблица сообщение связано с категорией с id. как это

table post
  id
  title
  category_id

table category
  id
  name
  desc

, и я хочу показать архив из сообщения с категорией, поэтому мне нужно получить все сообщения из базы данных. но я не знаю, как получить категорию по category_id в таблице сообщений

я знаю, что все данные поступают из базы данных в виде массива, и я не знаю, как создать отношение, чтобы получить имя категории из идентификатор в таблице сообщений

У меня есть модель для сообщения Post и категории Category и контроллер PostController и CategoryController

1 Ответ

0 голосов
/ 01 марта 2020

Для этого вам нужно использовать Eloquent Relation .

В классе Category вам необходимо определить отношение, как показано ниже:

public function posts()
{
        return $this->hasMany(Post::class);
}

Тогда Вы можете получить все сообщения для данной категории, вызвав метод posts(). Например, чтобы получить все сообщения для category Id = 1, вы можете сделать это:

Category::find(1)->posts

Аналогично, в классе Post вы можете создать categor() метод

public function category()
{
        return $this->belongsTo(Category::class);
}

Чтобы получить все категории из всех сообщений

(1) Затем вы можете использовать коллекцию Laravel, чтобы найти все названия категорий для всех сообщений. Например:

App\Post::all()->map->category->pluck('name')->unique()

Обратите внимание, что в приведенной выше строке я использую метод Collection map, чтобы создать конструкцию более высокого порядка для l oop через все сообщения.

(2) Чтобы отобразить это в виде, из вашего контроллера сначала верните представление

public function index()
{
  $categories = App\Post::all()->map->category->pluck('name')->unique();
  return view('index', compact('categories');
}

(3) Отображение данных в Blade Внутри index.blade.php отобразите значения как это:

@foreach($categories as $c)
{{ $c }}
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...