добавьте значение в определенное свойство - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть коллекция Pages

$pages = Pages::select('image')->where('chapter_id',$chapter_id)->get();

она возвращает

"data": [
  {
    "image": "01.jpg"
  },
  {
    "image": "02.jpg"
  },
  {
    "image": "03.jpg"
  },
  {
    "image": "04.jpg"
  }]

как добавить значение (путь URL) в свойстве изображения, поэтому в моем случае я хочучтобы вернуть вот так:

"data": [
  {
    "image": "https://example.com/01.jpg"
  },
  {
    "image": "https://example.com/02.jpg"
  },
  {
    "image": "https://example.com/03.jpg"
  },
  {
    "image": "https://example.com/04.jpg"
  },]

спасибо

Ответы [ 2 ]

2 голосов
/ 01 ноября 2019

Вам потребуется создать аксессор на вашей модели страницы. На вашей модели страницы добавьте метод, подобный приведенному ниже;

public function getImageAttribute($value)
{
    return "https://example.com".$value; //this will be a default rendering anytime your image field is called from your db
}
1 голос
/ 01 ноября 2019

Я предлагаю do not create accessor с тем же именем, что и имя столбца, потому что вы никогда не сможете получить его исходное значение вне модели.

вместо этого используйте отдельное имя для средства доступа .

public function getImageFullUrlAttribute(){  //or any name you want
 return ...       
} 

Затем вы вызываете эту функцию, удаляя слова get и Attribute в приведенном выше примере, имя функции будет imageFullUrl() Затем вы можете вызвать ее $image->imageFullUrl()

Более того:

вы также можете добавить его к каждому ответу, используя $appends свойство класса модели.

$appends = ['image_full_url'];  
// this is snake_case name of above function excluding get and Attribute words

Теперь вы можете вызывать его с помощью $image->image_full_url

Но будьте осторожны при использовании $appends, потому что он может вызывать нагрузку, если вы используете в нем отношение, которое замедлит время отклика до очень медленного.

Я предлагаю использовать только $appends на столбцы и не использовать никаких связей в нем.

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