例如这里是表结构。
User
-----
-id
-role_id
-fname
-lname
-country_code
-mobile
-password
-remember_token
-email
-address
-location_id
另一张表
Role
-----
-id
-name
现在,如果我想要来自带有角色表的用户表的所有用户信息,我会这样写。
$ user = User :: with('Role') - > where('users.id',$ id) - > first() - > toArray();
但它会从用户表中获取所有数据。 我需要的是具有预先加载的用户表的选定列。 仅像fname,lname,mobile,来自用户表的电子邮件和来自角色表的role_name。
我知道如何选择关联表的特定列,如下所示。
public function Role(){
return $this->belongsTo('App\Role')->select('id','name as role_name');
}
但是如何使用with()?
选择User表的特定列答案 0 :(得分:0)
尝试这样的事情(我按头写,测试一下):
$user = User::with('Role')
->where('users.id',$id)
->select('users.fname','users.lname','users.mobile','users.email', 'roles.name as role_name')
->first()->toArray();
或直接使用joints。
答案 1 :(得分:0)
请试试这个;
User::with(['Role' => function ($query) {
$query->select('name');
}])->select('fname', 'lname', 'mobile', 'email', 'role_id')->whereId($id)->first()->toArray();