Javascript LaravelAjax返回联接表的整个对象

Javascript LaravelAjax返回联接表的整个对象,javascript,ajax,laravel,vue.js,eloquent,Javascript,Ajax,Laravel,Vue.js,Eloquent,我只想从表用户中获取名称,但它会在网络选项卡中返回整个用户对象,这会泄漏私人信息,如phone(仅在用户表中) 管理模式: class Admin extends Model { protected $appends = ['name']; public function user() { return $this->belongsTo('App\User'); } public function getNameAttribute()

我只想从表用户中获取名称,但它会在网络选项卡中返回整个用户对象,这会泄漏私人信息,如phone(仅在用户表中)

管理模式:

class Admin extends Model
{
    protected $appends = ['name'];
    public function user()
    {
        return $this->belongsTo('App\User');
    }
    public function getNameAttribute()
    {
        return $this->user?$this->user->name:'';
    }
}
管理员控制器:

    public function ajaxLoadAdmins (Request $request)
    {
        $query = Admin::select('admins.slug', 'admins.about')->paginate(10);
        return $admins;
    }
但是,当我从ajax/axios调用这个函数时,它会返回一个完整的用户对象以及包含用户表所有列的名称

我还尝试了不使用访问器/变异器,并像下面的代码一样简单,但当我们在devtools的网络选项卡中看到它或在控制台中登录它时,它仍然有一个用户对象

  public function ajaxLoadAdmins (Request $request)
    {
        $query = Admin::select('admins.slug', 'admins.about', 'users.name')->leftjoin('users','admins.user_id','=','users.id')->paginate(10);
        return $admins;
    }

Laravel
中,如果涉及一对多关系,includes可能会笨重、多余、不必要的列,有时还会有多个重复模型。使用with,它将加载您的关系并在响应中转换关系

Admin::with('user')->paginate(10);
您的管理员模型将具有此结构,并且您的用户名将以最小的工作量包含在内

{
    "slug": "admin",
    "about": "interesting",
    "user": {
        "name": "John doe"
    }
}
可以在模型上隐藏变换的特性。因此,在User.php模型上添加以下内容

class User {
    protected $hidden = ['phone'];
}

已经尝试过这是你答案的结构{“slug”:“admin”,“about”:“interest”,“user”:{“name”:“John doe”,“phone”:“03000000000”}}并且名字在那里?哦,你想隐藏电话吗?我更新我的回答我想在这个查询中隐藏电话,返回DB::table(“tablename”)->select(“fieldname”,“fieldname”)->paginate(10)