php - Laravel Eloquent 更新不更新一个字段

标签 php laravel vue.js eloquent

我正在使用 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/

相关文章:

php - 条件语句mysql基于用户名字段字符串中的第一个字符

php - 如何在codeigniter中使用嵌套选择查询来通过每个查询获得不同的结果

angularjs - Lumen With Angularjs 时的文件夹结构?

php - Laravel 5 中执行哪个路由 http ://localhost:8000/my/8

php - laravel Controller 与数据库不匹配

javascript - Bootstrap 工具提示初始化但未显示

javascript - 错误 : Unexpected token (Note that you need plugins to import files that are not JavaScript) rollup vue package

php - 在mysql中获取相似行数

javascript - 创建数据firestore后如何返回值

php - 按季度分组年度