Laravel 5.6 - Как получить данные постов из нереляционной таблицы? - PullRequest
0 голосов
/ 02 июля 2018

Я использую Laravel 5.6. Ниже моего стола

Таблица: категории

+----+-----------+----------+
| id | name      |  slug    |
+----+-----------+----------+
|  1 | Cat1      | cat1     |
|  2 | Cat2      | cat2     |
|  3 | Cat3      | cat3     |
+----+-----------+----------+

Таблица: сообщения

+----+----------+------------+----------+
| id | user_id  | name       |  photo   |
+----+----------+------------+----------+
|  1 | 1        | Post1      | img1.jpg |
|  2 | 2        | Post2      | img2.jpg |
|  3 | 1        | Post3      | img3.jpg |
|  4 | 1        | Post4      | img4.jpg |
+----+----------+------------+----------+

Таблица: post_categories

+----+----------+--------------+
| id | post_id  | category_id  |
+----+----------+--------------+
|  1 | 1        | 1            |
|  2 | 1        | 2            |
|  3 | 1        | 3            |
|  4 | 2        | 1            |
|  5 | 2        | 3            |
|  6 | 3        | 3            |
|  7 | 4        | 2            |
+----+----------+--------------+

Выше я разместил свои 3 таблицы. Вот post_categories табличное отношение с posts и categories таблицей. Я хочу показать все категории сообщений мудро. Ниже вижу мой вывод выглядит так:

Cat1
   Post1
   Post2
Cat2
   Post1
   Post4
Cat3
   Post1
   Post2
   Post3

URL-адреса:

http://chhayalsing.com/blog

http://chhayalsing.com/blog/category/people

N.B: Если вы собираетесь читать наш местный язык. Не могли бы вы изменить язык Odia на English (в разделе нижнего колонтитула имеется опция Изменить язык)

People категория, имеющая 8 постов. Но здесь показывается все. Я понятия не имею об этом запросе. Я попробовал:

$posts = Post::with([
    'user' => function($query) {
        $query->select(['id', 'username']);
    }, 
    'comments', 
    'post_category' => function($query) {
        $query->select(['id', 'name']);
    }
])->where('status', '=', 1)
->orderBy('id', 'DESC')->paginate($perPage);

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

1 Ответ

0 голосов
/ 03 июля 2018

Вы можете легко запросить, чтобы получить все категории $cats = Cat::all(). Затем, используя цикл, вы получите все посты каждой категории $cat и поместите их в вашего ребенка $cats.

Наконец, у вас будет только один элемент (может быть $cats). Это будет выглядеть так:

$cat = { items: array:2[ 1 => { "id": "1", "name": "cat1:, "post": array:3 [ 1 => post1 detail, 2 => post2 detail, 3 => post3 detail ] }, 2 => { "id": "2", "name": "cat2:, "post": array:2 [ 1 => post1 detail, 2 => post2 detail, ] } }

Тогда в лезвии использование только $ cats может помочь вам передать все данные о $ cat и $ post о себе.

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