Javascript LaravelAjax返回联接表的整个对象
我只想从表用户中获取名称,但它会在网络选项卡中返回整个用户对象,这会泄漏私人信息,如phone(仅在用户表中) 管理模式: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()
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)