json - Laravel 用户模型未在 JSON 响应中处理
问题描述
我有一个 Laravel 5.8 API,其中用户集合的 JSON 响应按预期工作,但模型失败。
namespace App\Traits;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
trait ApiResponder
{
private function successResponse($data, $code)
{
return response()->json($data, $code);
}
protected function errorResponse($message, $code)
{
return response()->json(['error' => $message, 'code' => $code], $code);
}
protected function showAll(Collection $collection, $code = 200)
{
return $this->successResponse(['data' => $collection], $code);
}
protected function showOne(Model $model, $code = 200)
{
return $this->successResponse(['data' => $model], $code);
}
}
下面是调用响应的控制器方法。
public function index()
{
$users = User::all();
return $this->showAll($users);
}
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$rules = [
'email' => 'email|unique:users,email,' . $user->id,
'password' => 'min:6|confirmed'
];
if ($request->has('name')) {
$user->name = $request->name;
}
if ($request->has('email') && $user->email != $request->email) {
$user->verififed = User::UNVERIFIED_USER;
$user->verififcation_token = User::generateVerificationCode();
$user->email = $request->email;
}
if ($request->has('password')) {
$user->password = bcrypt($request->password);
}
if (!$user->isDirty()) {
return $this->errorResponse('You need to specify a change to update', 422);
}
$user->save();
$this->showOne($user);
}
index 方法句柄作为集合完美地工作,但使用模型的更新方法返回空(根本没有内容)。我已经确认该$data
变量确实包含预期的模型信息,因为我可以打印显示我想要的结果的 JSON 编码。它只是response()->json()
由于某种原因无法正常工作。
解决方案
它实际执行的代码非常复杂。
在这里你有问题,不用说渲染响应,你需要一个回报。
$user->save();
$this->showOne($user);
}
应该:
$user->save();
return $this->showOne($user);
}
奖励:我会研究响应转换以供将来参考,请参阅Eloquent Resources或Fractal。您可以使用FormRequest来验证输入,而不是做太多的 if 逻辑。
推荐阅读
- excel - SUMPRODUCT 在所有带有工作表乘数的工作表上
- python - Apache 从 django.contrib 类 WKBWriter/Reader 崩溃
- javascript - 给定字符串数组,遍历每个字符串并调用基于 promise 的函数,但要等到前一次迭代完成后再继续?
- python - 无法在python中读取简单的txt文件
- python - Pandas df 导出到 csv:无权限
- ios - IOS 13,CoreNFC。NFCError Code=100“堆栈错误”是什么意思?
- security - GitHub 的“Dependabot:自动安全修复”的可靠性和缺陷
- sql - PL/SQL 脚本创建一个计算并返回三角形面积的程序
- android - 构建后如何确定aar文件
- java - 编码视频直播?(显示我将在录制视频时覆盖在相机上的帧)