我有一个表user - User(Model),它具有以下关系:
public function roles()
{
return $this->belongsToMany(Config::get('entrust.role'), Config::get('entrust.role_user_table'), 'user_id', 'role_id');
}
public function regions() {
return $this->belongsToMany('App\Regions', 'user_region', 'user_id', 'region_id');
}我正在尝试此查询,但它没有得到所需的结果
$result = User::with(['roles' => function($query) {
$query->select('user_id','role_id');
},
'regions' => function($query) {
$query->select('user_id','region_id', 'region_name');
}])
->where('user_id', '=', $id)
->get()->toArray();它只提供来自用户表的数据,而不提供关系数据。
我错过了什么??
发布于 2015-07-24 01:21:28
您正在使用的表示法应该用于constraints。从您的代码看,您实际上并不需要任何约束。
$result = User::with(['roles', 'regions'])
->where('user_id', '=', $id)
->first()->toArray();您定义的关系只是一个belongsTo。您可能应该使用hasMany关系。
发布于 2015-07-24 04:33:18
如果你使用的是5.1版本,试试这个:
$result = User::whereHas(['roles' => function($query) {
$query->lists('user_id','role_id');
},
'regions' => function($query) {
$query->lists('user_id','region_id','region_name');
}])
->where('user_id', '=', $id)
->all();如果没有,请删除all()并使用get()
发布于 2015-07-25 14:37:22
这对我很有效。
$users = User::with('regions', 'roles')->get();
$userInfo = [];
foreach ($users as $user)
{
$userInfo[] = [
'users' => $user,
'regions' => $user->regions->toArray(),
'roles' => $user->roles->toArray(),
];
}https://stackoverflow.com/questions/31592522
复制相似问题