Показать только название коллекции? - PullRequest
2 голосов
/ 09 января 2020

У меня есть сводная таблица post_tag между сообщениями и таблицей тегов.

Я хочу показать имя тега для каждого сообщения в API ресурса.

Фрагменты кода файла ресурса:

public function toArray($request)
{
    return [
        'Name'=> $this->title,
        'Description'=> $this->desc,
        'Image'=> $this->image_path,
        'Posted By'=> $this->user->name,
        'Category Name'=> $this->category->name,
        'Tags' => $this->tags,
    ];
}

Отношение добавлено в модель сообщения:

public function tags()
{
  return $this->belongsToMany(Tag::class)->withTimestamps();
}

Один из результатов API:

 "Name": "first post",
    "Description": "desc of the post",
    "Image": "https://blog.test/uploads/post/SjvDfC1Zk5UzGO6ViRbjUQTMocwCh0lzEYW1Gufp.jpeg",
    "Posted By": "test",
    "Category Name": "web dev",
    "Tags": [
        {
            "id": 1,
            "name": "HTML",
            "created_at": "2020-01-08 19:19:55",
            "updated_at": "2020-01-08 19:19:55",
            "pivot": {
                "post_id": 1,
                "tag_id": 1,
                "created_at": "2020-01-08 19:21:40",
                "updated_at": "2020-01-08 19:21:40"
            }
        },
        {
            "id": 2,
            "name": "CSS",
            "created_at": "2020-01-08 19:19:55",
            "updated_at": "2020-01-08 19:19:55",
            "pivot": {
                "post_id": 1,
                "tag_id": 2,
                "created_at": "2020-01-08 19:21:40",
                "updated_at": "2020-01-08 19:21:40"
            }
        },

Мне нужно показать вот так просто:

"Tags" : {
    'HTML',
    'CSS',
    'JS',
 }

1 Ответ

4 голосов
/ 09 января 2020

Вы должны использовать вот так

return [
    'Name'=> $this->title,
    'Description'=> $this->desc,
    'Image'=> $this->image_path,
    'Posted By'=> $this->user->name,
    'Category Name'=> $this->category->name,
    'Tags' => $this->tags->pluck('name')
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...