0

我有一个像这样的 Laravel 查询-

public  function rearrangePhoto(Request $request)
{
    $ordering = $request->input('ordering');
    return UserSlidePhoto::where('user_id', Auth::id())
                  ->select(
                            'thumbnail_name',
                            'original_image_name',
                            'id'
                          )
                  ->orderBy('created_at', $ordering)
                  ->get();
}

像这样的模型-

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class UserSlidePhoto extends Model
{
    protected $table="users_slides_photos";

    protected $fillable=['user_id','social_image_id','provider_key','provider_id','thumbnail_name'];
    public function users()
    {
        return $this->belongsTo('App\User')->withTimestamps();
    }
}

我得到这样的回应-

[{
  "thumbnail_name": "2-hR1vt2ZOOesbpGv00MRbGDYyGAMEqU.jpg",
  "original_image_name": "qweqqwe.jpg",
  "id": 49
},
{
  "thumbnail_name": "2-xqiUrT2lJkEBQ0aA3MmZARmWlAq0BT.jpg",
  "original_image_name": "tyutjh.jpg",
  "id": 50
},
{
  "thumbnail_name": "2-s0zzdC275XqvrT2llBQ4h9sugadCHk.jpg",
  "original_image_name": "asdas.jpg",
  "id": 101
}]

我喜欢得到这样的回应——

[{
  "thumbnail_name": "base_url/2-hR1vt2ZOOesbpGv00MRbGDYyGAMEqU.jpg",
  "original_image_name": "qweqqwe.jpg",
  "id": 49
},
{
  "thumbnail_name": "base_url/2-xqiUrT2lJkEBQ0aA3MmZARmWlAq0BT.jpg",
  "original_image_name": "tyutjh.jpg",
  "id": 50
},
{
  "thumbnail_name": "base_url/2-s0zzdC275XqvrT2llBQ4h9sugadCHk.jpg",
  "original_image_name": "asdas.jpg",
  "id": 101
}]

所以我所做的是——

public  function rearrangePhoto(Request $request)
{
    $ordering = $request->input('ordering');
    $base_url = "base_url/";
    return UserSlidePhoto::where('user_id', Auth::id())
                  ->select(
                            $base_url . DB::raw('thumbnail_name'),
                            'original_image_name',
                            'id'
                          )
                  ->orderBy('created_at', $ordering)
                  ->get();
}

我收到了这个错误-

在此处输入图像描述

有人可以帮忙吗?

提前感谢您的帮助....

4

3 回答 3

1

尝试将您的选择更改为:

select(
    DB::raw('concat("'.$base_url.'/", thumbnail_name)'),
    'original_image_name',
    'id'
)

但我认为最好使用getAttribute. 即使您使用 JS,它也可以解决您的问题,因为在 Laravel 后台调用mutator并在响应中您得到了您需要的东西。所以你不需要做任何开销,只需编写一个mutator. 希望我的回答也能帮到你。

于 2016-01-21T09:45:20.697 回答
0

为此,您需要使用 mutator,更多https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators。在您的 UserSlidePhoto 模型中使用此方法

public function getThumbnailNameAttribute($value)
{
    return $base_url .$value;
}
于 2016-01-21T09:38:41.457 回答
0

您正在寻找的是 Laravel 访问器。

class UserSlidePhoto extends Model
{
    $base_url = "base_url/";
    protected $table="users_slides_photos";

    protected $fillable=['user_id','social_image_id','provider_key','provider_id','thumbnail_name'];
    public function users()
    {
        return $this->belongsTo('App\User')->withTimestamps();
    }

    public getThumbnailNameAttribute($value){
        return $base_url. $value;
    }
}
于 2016-01-21T09:41:27.583 回答