Laravel Mutator для добавления URL для массива JSON - PullRequest
0 голосов
/ 09 апреля 2020

В моем столбце таблицы MySQL есть поле JSON, в котором есть массив JSON с частью URL-адресов.

["products/1.jpg", "products/2.jpg", "products/3.jpg"]

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

["www.example.com/images/products/1.jpg", "www.example.com/images/products/2.jpg", "www.example.com/images/products/3.jpg"]

Я пробовал использовать функцию getAttribute (), как недопустимый код. Но не удалось.

public function getImagesAttribute(){
  $images = json_decode($this->attributes['images']);
  $imageP = [];
  foreach ($images as $image) {
    $imageP[] = "www.example.com/images/" . $image;
  }
  return $imageP;
}

Вы можете мне помочь.

1 Ответ

1 голос
/ 09 апреля 2020

Вы, вероятно, хотите использовать $this->images вместо $this->attributes['images'].

В этом случае я бы использовал Коллекции , например, так:

public function getImagesAttribute(){
    return collect(json_decode($this->images))
        ->map(function ($image) {
            return "www.example.com/images/" . $image;
        })
        ->all();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...