【发布时间】:2019-09-15 00:10:37
【问题描述】:
我正在使用 Laravel API 和 VueJS 前端应用程序。我发送axiosPOST 电话以及用户提供的一些关于他自己的信息。在后端,我获取该数据并更新 MySQL 数据库中的用户记录。
这是我的后端代码:
$user = User::where(['logintoken' => $request->login_token, 'remember_token' => $request->remember_token])->first();
if (!$user) {
$status = 404;
$response = ['status' => false, 'message' => 'User not found.'];
} else {
$affectedRows = $user->update([
'country' => $request->input('country'),
'city' => $request->input('city'),
'state' => $request->input('state'),
'dob' => $request->input('dob'),
'language' => $request->input('language'),
'street' => $request->input('street'),
'house' => $request->input('house'),
'avatar' => $request->input('avatar'),
'birthplace' => $request->input('birthplace'),
'type' => $request->input('userType'),
'bio' => $request->input('bio'),
'zip' => $request->input('zip'),
'has-completed-profile' => 1
]);
if (!$affectedRows) {
$response = ['status' => false, 'message' => 'Error updating'];
$status = 500;
} else {
$response = ['status' => true, 'message' => 'User updated successfully', 'updated_record' => $user, 'request' => $affectedRows, 'zip' => $request->input('zip')];
}
}
现在,这段代码运行良好,只是它没有更新zip 字段。我console.log() VueJS 端的响应,我看到zip 值是正确的,并且数据库中zip 字段的数据类型是字符串。
不过,这不适用于zip 列。当我创建 users 迁移时,没有 zip 列,但一段时间后,当我需要它时,我创建了另一个迁移并使用它来更改表以插入 zip 字段。
知道为什么它不起作用吗?
【问题讨论】:
-
您需要将该列添加到它的模型类中
-
您是否在
User模型中使用空的$guarded数组?或者,如果您使用$fillable,则需要在允许的字段数组中添加zip。 -
尝试
Log::info($request->all());并检查/storage/logs中的日志以验证zip 是否正在传递到请求中。 -
@RahulMeshram 是的,忘记这一点我是个笨蛋!您应该将其添加为答案,哈哈。
-
你能否分享 .blade 视图代码以及@nakvov 提到的,验证 zip 是否列在 $fillable 中?
标签: php laravel vue.js eloquent