不能 return 对象附加 belongsToMany 关系
Can't return object with belongsToMany relationship attached
我正在尝试 return 包含一系列角色的 $users
列表。
这是我的控制器:
$users = DB::table('users')->take(5)->skip(2)->get();
foreach ($users as $user)
{
$user = User::with('roles')->find($user->id);
}
return Response::json(array(
'users' => $users
));
模型关系如下:
public function roles()
{
return $this->belongsToMany('Role')->withTimestamps();
}
但这只是 return 没有附加角色的用户。但是,如果我这样做:
return Response::json(array(
'users' => User::with('roles')->get()
));
我得到了每个用户的角色的完整列表。那么,我做错了什么?
奇怪的是,如果我这样做:
return Response::json(array(
'users' => User::with('roles')->find($user->id)
));
然后 return 那个用户具有我预期的角色,那么为什么不 return 在 foreach
语句中呢?
foreach
使用按值传递。这意味着您不会更改实际的数组项,而只是更改值的副本。要更改它并让项目 通过引用 添加 &
:
foreach ($users as &$user) {
$user = User::with('roles')->find($user->id);
}
但是你为什么不这样做呢?
$users = User::with('roles')->take(5)->skip(2)->get();
return Response::json(array(
'users' => $users
));
使用 DB
查询时,您将失去整个 Eloquent 关系功能。
你可以
$users = User::with('roles')->take(5)->skip(2)->get();
一个好的做法是不要将Eloquent模型"style"查询(User::...->get()
)与直接数据库查询(DB::table('user')...->get
).
我正在尝试 return 包含一系列角色的 $users
列表。
这是我的控制器:
$users = DB::table('users')->take(5)->skip(2)->get();
foreach ($users as $user)
{
$user = User::with('roles')->find($user->id);
}
return Response::json(array(
'users' => $users
));
模型关系如下:
public function roles()
{
return $this->belongsToMany('Role')->withTimestamps();
}
但这只是 return 没有附加角色的用户。但是,如果我这样做:
return Response::json(array(
'users' => User::with('roles')->get()
));
我得到了每个用户的角色的完整列表。那么,我做错了什么?
奇怪的是,如果我这样做:
return Response::json(array(
'users' => User::with('roles')->find($user->id)
));
然后 return 那个用户具有我预期的角色,那么为什么不 return 在 foreach
语句中呢?
foreach
使用按值传递。这意味着您不会更改实际的数组项,而只是更改值的副本。要更改它并让项目 通过引用 添加 &
:
foreach ($users as &$user) {
$user = User::with('roles')->find($user->id);
}
但是你为什么不这样做呢?
$users = User::with('roles')->take(5)->skip(2)->get();
return Response::json(array(
'users' => $users
));
使用 DB
查询时,您将失去整个 Eloquent 关系功能。
你可以
$users = User::with('roles')->take(5)->skip(2)->get();
一个好的做法是不要将Eloquent模型"style"查询(User::...->get()
)与直接数据库查询(DB::table('user')...->get
).