我正在使用 Laravel API 和 VueJS 前端应用程序。我发送 axios
POST
调用以及用户提供的关于他自己的一些信息。在后端,我获取该数据并更新 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
字段。我在 VueJS 端 console.log()
响应,我看到 zip
值是正确的,而且 zip
字段的数据类型也是正确的在数据库中是字符串。
不过,这不适用于 zip
列。当我创建 users
迁移时,没有 zip
列,但过了一段时间,当我需要它时,我创建了另一个迁移并用它来改变表插入 zip
字段。
知道为什么它不起作用吗?
最佳答案
您需要在相应模型类中添加该字段。
这应该可以解决您的问题。
$fillable
用作应该可批量分配的属性的“白名单”。因此,首先,您应该定义要使哪些模型属性可批量分配。您可以使用模型上的 $fillable
属性来执行此操作。例如,让我们将 User
模型的 zip
属性设为可批量分配:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['zip', // your rest column names];
}
这个例子应该可以帮助您解决问题。
这是 documentation .
关于php - Laravel Eloquent 更新不更新一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55851339/