Laravel Отношения между 3 таблицами - PullRequest
0 голосов
/ 16 декабря 2018

, поэтому я пытаюсь получить название категории, и вот что у меня есть планшеты:

категорий : идентификатор, имя

post_categories: id, post_id, category_id

post : id, столбцы

У меня есть модели: Post, PostCategory и Category.

Post Model:

public function categories()
{
    return $this->hasMany('App\PostCategory');
}

PostCategory Model:

public function category()
{
    return $this->hasMany(Category::class, 'id', 'category_id');
}

и в контроллере у меня есть

return Post::with('categories.category')->orderby('id','desc')->get();

И мой результатэто

 [
  {
    "id": 50,
    "categories": [
      {
        "id": 92,
        "category_id": 11,
        "category": [
          {
            "id": 11,
            "name": "JXrfLHdQVNON",
            "image": null
          }
        ]
      }
    ]
  }
]

, и я хотел, чтобы это было что-то вроде

[
  {
    "id": 50,
    "categories": [
      {
        "id": 1,
        "name": "category_name",
        "image": null
      }
    ]
  }
]

Есть ли способ сделать это?Я играл с этим и не смог найти легкий способ сделать это

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

внутри вашей почтовой модели:

 public function categories()
 {
        return $this->belongsToMany('App\Model\Category','post_categories','post_id','category_id')->withTimestamps();
 }

в вашем контроллере:

return Post::with('categories:id,name,image')->orderBy('id','desc')->get();
0 голосов
/ 16 декабря 2018

Это отношение многих ко многим.Убедитесь, что ваши отношения настроены правильно.Если вы хотите выбрать конкретные столбцы, вы можете сделать:

return Post::with('categories.category:id,name')->orderby('id','desc')->get();

Он вернет столбцы id, name из таблицы / модели категории.Для этого необходимо указать id.

https://laravel.com/docs/5.7/eloquent-relationships#many-to-many

https://laravel.com/docs/5.7/eloquent-relationships#eager-loading

...