У меня есть запрос 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();
}
И я получаю эту ошибку
Может кто-нибудь, пожалуйста, помогите?
Заранее спасибо за помощь ….
То, что вы ищете, это аксессуар 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;
}
}
Попробуйте изменить свой выбор на это:
select(
DB::raw('concat("'.$base_url.'/", thumbnail_name)'),
'original_image_name',
'id'
)
Но я думаю, лучше бы использовать getAttribute
, Это может решить вашу проблему, даже если вы используете JS, потому что за кулисами Laravel вызывает mutator
и в ответ вы получили то, что вам нужно.
Так что вам не нужно делать никаких накладных расходов, просто напишите mutator
, Надеюсь, мой ответ также может помочь вам.
для этого нужно использовать мутатор, для более https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators.Use этот метод в вашей модели UserSlidePhoto
public function getThumbnailNameAttribute($value)
{
return $base_url .$value;
}