You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel8 + Vuex 发起POST请求返回500内部服务器错误求助

问题根因

你看到的500错误核心原因是Laravel模型默认会自动维护created_at和updated_at两个时间戳字段,但你的迁移文件中没有创建这两个字段,执行SQL插入时找不到对应字段触发报错。

解决方案

修复时间戳错误(二选一即可)

  • 方案1(推荐,保留时间戳):修改迁移文件,在表结构定义中加入时间戳字段,重新执行迁移:
// 迁移文件up方法内新增
$table->timestamps();

开发环境可执行php artisan migrate:fresh重建表结构(注意会清空所有表数据),生产环境建议新建迁移文件单独添加两个timestamp类型字段。

  • 方案2(不需要时间戳):在StreamingProvider模型中关闭自动维护时间戳的功能,新增一行配置:
public $timestamps = false;

你的两个疑问解答

  1. 保存数据到DB前是否需要手动做类型转换?
    不需要。Laravel的模型$casts配置会自动完成类型转换,你提交的布尔值会自动转为数据库存储需要的0/1数值,读取时也会自动转回布尔类型返回。注意你当前模型的属性名拼写错误,你写的是$cast,正确属性名是$casts,修正后类型转换才会生效。
  2. 布尔类型的属性是否需要加入$fillable配置?
    需要。$fillable是Laravel的批量赋值白名单,和字段类型无关,只要你需要给字段赋值、或者使用create等批量写入方法,都需要把对应字段加入$fillable,也可以设置protected $guarded = []放开所有字段的批量赋值限制。

其他优化建议

  • 迁移文件中user_id字段类型错误,你当前定义的是string类型,和用户表的自增bigint类型不匹配,建议修改为:
$table->unsignedBigInteger('user_id');
// 可额外加外键约束
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
  • 控制器addStreamingProviders方法的参数StreamingProvider $userStreamingProviders是无效冗余的,你后续重新new了模型实例,完全没有用到路由模型绑定注入的对象,可以直接删掉该参数。
  • 控制器赋值逻辑可简化,增加参数校验后用批量赋值减少重复代码:
public function addStreamingProviders(Request $request)
{
    $validated = $request->validate([
        'Netflix' => 'boolean',
        'Amazon Prime Video' => 'boolean',
        'Sky Ticket' => 'boolean',
        'Disney Plus' => 'boolean',
        'HBO Video' => 'boolean',
    ]);
    $provider = StreamingProvider::create(array_merge($validated, [
        'user_id' => auth()->id()
    ]));
    return response()->json(['streamingProviders' => $provider]);
}
  • Vue代码中不要用jQuery获取select选中值,改用Vue的v-model绑定更符合规范:给select标签加v-model="selectedCountry",在data中新增selectedCountry: '',提交时直接用this.selectedCountry取值即可。
  • 你的提交逻辑中updateUserStreamingProviders和updateCountry是两个并行的异步请求,直接等updateCountry的then可能出现updateUserStreamingProviders还没执行完就跳转的问题,建议用Promise.all包裹两个请求,等都执行完成后再跳转。

内容的提问来源于stack exchange,提问作者Lluís Mañas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:15:05