You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Ajax无法获取User模型full_name属性显示undefined的问题

解决Laravel模型访问器在AJAX中返回undefined的问题

问题出在Laravel Eloquent的序列化机制上:Blade模板里直接调用$user->full_name是触发模型的访问器方法,但当你把User实例转为JSON返回给AJAX时,框架默认只会序列化数据库中存在的字段,不会自动包含访问器生成的属性,所以前端拿到的JSON对象里没有full_name,自然显示undefined。

有两种常用解决方法:

方法一:通过模型的$appends属性自动包含访问器

在你的User.php模型中添加$appends属性,把访问器的名称(注意是属性名,不是方法名)加入进去:

class User extends Model
{
    // 新增这一行
    protected $appends = ['full_name'];

    public function getFullNameAttribute()
    {
        if($this->first_name && $this->last_name) {
            return $this->first_name . ' ' . $this->last_name;
        } else {
            return $this->name;
        }
    }
}

这样无论你是通过return response()->json($user);还是其他方式返回模型,序列化后的JSON都会自动包含full_name字段,前端AJAX就能正常获取到值了。

方法二:在控制器返回响应时手动添加属性

如果你只需要在某个特定AJAX接口里返回这个属性,可以在控制器中手动拼接:

// 假设$user是你的User实例
$userData = $user->toArray();
$userData['full_name'] = $user->full_name;

return response()->json(['user' => $userData]);

推荐用第一种方法,它更通用,能确保所有场景下返回的User数据都包含这个属性。

内容的提问来源于stack exchange,提问作者irankhostravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:34:59