Изображение URL возврата в Laravel API - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужно вернуть URL-адрес и имя изображения из базы данных.

Это мой метод вызова для получения данных из базы данных:

public function index(){
    $rav=Rav::select('id','image','nameravs')->get('image');
    return $this->sendResponse($rav->toArray(),'rav show is succesfuly');
}

Выходные данные выглядят так:

{"id": 88, "image": "1579781806.png", "nameravs": "asdad"},

Но я хочу вернуть изображение с URL-адресом пути как это:

"изображение": http://127.0.0.1: 8000 / images_ravs / 1579781806.png

Ответы [ 4 ]

2 голосов
/ 06 февраля 2020

Вы можете использовать Eloquent Accessor

добавить атрибут URL изображения в Rav. php Модель, как показано ниже. тогда вы можете получить к нему доступ в любом месте.

    public function getImageUrlAttribute($value)
    {
        return env('APP_URL'). '/images_ravs/' . $this->image;
    }

И не забудьте добавить Добавление свойства в Model

/**
 * The accessors to append to the model's array form.
 *
 * @var array
 */
protected $appends = ['image_url'];

тогда вы можете получить к нему доступ, как показано ниже.

$rav->image_url 
0 голосов
/ 06 февраля 2020

Я бы сделал что-то вроде этого: Попробуйте использовать как можно больше встроенных функций od Laravel. В большинстве случаев вам не нужно изобретать велосипед.

public function index(){
   $ravs = Rav::select('id','image','nameravs')->get();
   $results = [];

   foreach($ravs as $rav){
      $rav->image = env('APP_URL') . '/images_ravs/' . $rav->image;
      array_push($results, $rav);
   } 
   return response()->json($results);
 }
0 голосов
/ 06 февраля 2020

Вы можете использовать selectRaw или select с DB::raw и просто concat этот путь в качестве предварительно добавленной строки в столбце image в вашем запросе:

Rav::select(DB::raw("id, nameravs, CONCAT('/images_ravs/', image) as image"))->get()->toArray();

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

0 голосов
/ 06 февраля 2020

Попробуйте это:

public function index(){
    $rav = Rav::select('id','image','nameravs')->get('image');

    return $this->sendResponse(
        [
            'id' => $rav->id,
            'image' => URL::to('/').'/images_ravs/'.rav->image,
            'nameravs' => $rev->nameravs
        ],'rav show is succesfuly');

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