Laravel 5.3: 存取器值不 JSON 编码
Laravel 5.3: accessor value doesnot JSON encode
我正在使用 Laravel 5.3、ajax 制作一个 crud 应用程序。我在我的员工模型上使用访问器,如下所示:-
class Employee extends Model
{
protected $table='employees';
protected $primaryKey = 'id';
protected $fillable= ['name','designation','email','phone','address','bio','user_id'];
public function getAvatarAttribute()
{
if(file_exists(public_path("uploads/employee/employee_{$this->id}.jpg"))){
return url("uploads/employee/employee_{$this->id}.jpg");
}
return url("images/employee_default.jpg");
}
EmployeeController.php:-
public function show(Request $request)
{
if($request->ajax()){
$id = $request->id;
$employee = Employee::find($id);
return response()->json($employee);
}
查看代码:-
<div class="col-sm-3">
<img id="view_avatar" src="" alt="Avatar" class="img-thumbnail">
</div>
<p><b>Employee Name : </b><span id="view_ename" class="text-success"></span></p>
<p><b>Designation : </b><span id="view_designation" class="text-success"></span></p>
<p><b>Mobile No.: </b><span id="view_mobile" class="text-success"></span></p>
<p><b>Email: </b><span id="view_email" class="text-success"></span></p>
<p><b>Address : </b><span id="view_address" class="text-success"></span></p>
Jquery 使用 AJAX 获取数据的代码:-
function fun_view(id)
{
var view_url = $("#hidden_view").val();
$.ajax({
url: view_url,
type:"GET",
data: {"id":id},
success: function(result){
console.log(result);
$("#view_avatar").attr('src',result.avatar);
$("#view_ename").text(result.name);
$("#view_designation").text(result.designation);
$("#view_mobile").text(result.phone);
$("#view_email").text(result.email);
$("#view_address").text(result.address);
}
});
}
此处所有数据均使用Ajax显示,图片除外。
- 在我的控制器中,当我 dd($employee->avatar);
它显示 url 图像。
- 但在 console.log(result);
输出中没有关于头像的任何信息
Console.log(结果)输出:-
address:"dhaka"
bio:"dhaka"
created_at:"2017-03-21 20:00:30"
designation:"partner"
email:"i.mossadek@gmail.com"
id:18
name:"Moloy"
phone:"01555555555"
updated_at:"2017-03-21 20:00:30"
user_id:26
我的问题是我哪里做错了?提前致谢。
您需要将属性添加到 $appends
。
class Employee extends Model {
...
/**
* The accessors to append to the model's array form.
*
* @var array
*/
protected $appends = ['avatar'];
...
}
我正在使用 Laravel 5.3、ajax 制作一个 crud 应用程序。我在我的员工模型上使用访问器,如下所示:-
class Employee extends Model
{
protected $table='employees';
protected $primaryKey = 'id';
protected $fillable= ['name','designation','email','phone','address','bio','user_id'];
public function getAvatarAttribute()
{
if(file_exists(public_path("uploads/employee/employee_{$this->id}.jpg"))){
return url("uploads/employee/employee_{$this->id}.jpg");
}
return url("images/employee_default.jpg");
}
EmployeeController.php:-
public function show(Request $request)
{
if($request->ajax()){
$id = $request->id;
$employee = Employee::find($id);
return response()->json($employee);
}
查看代码:-
<div class="col-sm-3">
<img id="view_avatar" src="" alt="Avatar" class="img-thumbnail">
</div>
<p><b>Employee Name : </b><span id="view_ename" class="text-success"></span></p>
<p><b>Designation : </b><span id="view_designation" class="text-success"></span></p>
<p><b>Mobile No.: </b><span id="view_mobile" class="text-success"></span></p>
<p><b>Email: </b><span id="view_email" class="text-success"></span></p>
<p><b>Address : </b><span id="view_address" class="text-success"></span></p>
Jquery 使用 AJAX 获取数据的代码:-
function fun_view(id)
{
var view_url = $("#hidden_view").val();
$.ajax({
url: view_url,
type:"GET",
data: {"id":id},
success: function(result){
console.log(result);
$("#view_avatar").attr('src',result.avatar);
$("#view_ename").text(result.name);
$("#view_designation").text(result.designation);
$("#view_mobile").text(result.phone);
$("#view_email").text(result.email);
$("#view_address").text(result.address);
}
});
}
此处所有数据均使用Ajax显示,图片除外。
- 在我的控制器中,当我 dd($employee->avatar);
它显示 url 图像。
- 但在 console.log(result);
输出中没有关于头像的任何信息
Console.log(结果)输出:-
address:"dhaka"
bio:"dhaka"
created_at:"2017-03-21 20:00:30"
designation:"partner"
email:"i.mossadek@gmail.com"
id:18
name:"Moloy"
phone:"01555555555"
updated_at:"2017-03-21 20:00:30"
user_id:26
我的问题是我哪里做错了?提前致谢。
您需要将属性添加到 $appends
。
class Employee extends Model {
...
/**
* The accessors to append to the model's array form.
*
* @var array
*/
protected $appends = ['avatar'];
...
}