我对ajax称为方法很痛苦。
首先是与上述相同的请求:
$usersData = User::where('name', 'like', $queryString . '%')
->orWhere('email', 'like', $queryString . '%')
->orWhere('username', 'like', $queryString . '%')
->when($limit > 0 || $offset > 0, function ($usersData) use ($limit, $offset) {
$usersData->take($limit)->skip($offset);
})
->with(array('roles'=>function($query){
$query->select('name');
}))
->get();
在索引方法中完美运行,dd是正确的,'roles'只包含'name'字段但是如果我调用完全相同的请求'roles'包含所有属性而dd没有工作我被迫制作一个console.log我的数据我疯了!
这是完整的功能:
public function ajaxQuery(Request $request): string
{
$queryString = $request->input('queryString');
$offset = $request->input('offset');
$limit = $request->input('limit');
$usersData = User::where('name', 'like', $queryString . '%')
->orWhere('email', 'like', $queryString . '%')
->orWhere('username', 'like', $queryString . '%')
->when($limit > 0 || $offset > 0, function ($usersData) use ($limit, $offset) {
$usersData->take($limit)->skip($offset);
})
->with(array('roles'=>function($query){
$query->select('name');
}))
->get();
//->toJson();
foreach ($usersData as $key =>$user){
//$v['roles'] = $v['roles'][0]['name'];
//dd($v);
//$user->role = $user->role[0]['name'];
//dd($user->role[0]['name']);
//dd($user);
}
//$usersDatas['data'] = json_decode($usersData, true);
$usersDatas['data'] = $usersData;
$usersDatas['count'] = $usersData = User::where('name', 'like', $queryString . '%')
->orWhere('email', 'like', $queryString . '%')
->orWhere('username', 'like', $queryString . '%')->get()->count();
$usersDatas = json_encode($usersDatas);
return $usersDatas;
}
感谢您的帮助。
答案 0 :(得分:0)
当您急切地加载特定列时(就像使用“角色”一样),您需要在列列表中指定id列。
您可能并不总是需要与您的关系中的每一列 检索。因此,Eloquent允许您指定哪个 您要检索的关系列:
$ users = App \ Book :: with('author:id,name') - > get();
使用此功能时,您应始终包含id列 您要检索的列的列表。
$usersData = User::where('name', 'like', $queryString . '%')
->orWhere('email', 'like', $queryString . '%')
->orWhere('username', 'like', $queryString . '%')
->when($limit > 0 || $offset > 0, function ($usersData) use ($limit, $offset) {
$usersData->take($limit)->skip($offset);
})
->with(array('roles'=>function($query){
$query->select(['name', 'id']);
}))
->get();