我正在将Laravel API和VueJS Frontend应用程序一起使用。我发送了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
列,但过了一段时间,当我需要它时,又创建了另一个迁移,并用它来更改表以插入{{1} }字段。
对为什么它不起作用有任何想法吗?
答案 0 :(得分:1)
您需要在相应模型类中添加该字段。
这应该可以解决您的问题。
$fillable
用作应该批量分配的属性的“白名单”。因此,要开始使用,您应该定义要使其可大规模分配的模型属性。您可以使用模型上的$fillable
属性来执行此操作。例如,让我们使zip
模型的User
属性可分配:
<?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。
答案 1 :(得分:1)
您可能错过了模型的zip
中的$fillable
。
因此添加它,它应该看起来像这样:
protected $fillable = [
'country', 'city', 'state', 'dob', 'language', 'street', 'house', 'avatar', 'birthplace', 'type', 'bio', 'zip', 'has-completed-profile'
];