在 Laravel 5.1 中将模型保存到数据库之前执行一些操作

2024-05-02

在 Laravel 5.1 模型中,在将数据写入数据库之前,我该如何做一些事情,例如修改某些数据字段或进行更多验证? 关于该问题的文档很难在实际应用中使用:http://laravel.com/docs/5.1/eloquent#events http://laravel.com/docs/5.1/eloquent#events

我的代码是

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Helpers\Tools as Tools;

class Atoken extends Model
{
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'atoken';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'token', 
        'user_id', 
        'role',
    ];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = [
    ];

    public static function newToken($userId, $role){
        # Remove all token assoiciate with input user;
        Atoken::where('user_id', $userId)->delete();
        $params = [
            'user_id' => $userId,
            'role' => $role,
        ];
        Atoken::insert($params);
        $item = Atoken::where('user_id', $userId)->first();
        return $item->token;
    }

    protected static function boot(){
        static::creating(function ($model) {
            $model->token = 'sometoken';
        });
    }
}

在这种情况下,我总是遇到错误:

SQLSTATE[23502]: Not null violation: 7 ERROR:  null value in column \"token\" violates not-null constraint (SQL: insert into \"atoken\" (\"user_id\", \"role\") values (2, USER))

我该如何修复它?


class Lunch extends Eloquent
{
    protected static function boot()
    {
        static::creating(function ($model) {
            $model->topping = 'Butter';

            return $model->validate();
        });
    }

    protected function validate()
    {
        // Obviously do real validation here :)
        return rand(0, 1) ? true : false;
    }

    public static function newToken($userId, $role)
    {
        static::where('user_id', $userId)->delete();

        return static::create([
            'user_id' => $userId,
            'role' => $role,
        ])->token;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Laravel 5.1 中将模型保存到数据库之前执行一些操作 的相关文章

  • AngularJS 和 Laravel - 跨域 CORS / XHR 请求缺少(记住)cookie

    当我不使用 Chrome 中的 disable web security 选项时 我的 CORS XHR 请求在请求标头中缺少 Remember xyz cookie 如果我启用该选项 remember xyz cookie 将包含在请求标
  • Laravel 验证:对 null 的成员函数调用失败()

    这段代码几天前还可以工作 但我似乎做了一些事情导致它崩溃 我有这条路线 Route post admin routemanagement AdminController addRoute 看起来像这样 public function add
  • 区分 Web 路由调用与 API 路由调用?

    In my web php文件中 我有一条如下所示的路线 Route get HomeController getFeed 而在我的api php文件中 我有一条如下所示的路线 Route get feeds HomeController
  • 哎呀,看起来像出事了。拉拉维尔 5.1

    我有这样的路线 http localhost inspection show id 当我尝试同时加载路线时 在不同的选项卡中 有时其中一些选项卡会出现错误 哎呀 看起来出了问题 在不同选项卡中加载速度如此之快 http localhost
  • Laravel:运行队列:在 Windows Azure Web App 上连续监听

    我觉得问这个问题有点傻 但我似乎无法在互联网上找到这个问题的答案 经过几个小时的搜索后 我发现在 Linux 服务器上 您使用 Supervisor 在您的网站上连续运行 php artisanqueue listen 无论有或没有守护进程
  • Laravel Blade - 链/嵌入多种布局

    在我最喜欢的模板框架中 它们通常具有嵌套布局的能力 这在 Blade 中是可能的吗 例如 master blade php yield content 导航 blade php extend master
  • Laravel MySQL 按计数排序

    我正在使用 Laravel 和 MySQL 并且我有一个表post代表用户可以评论的帖子 现在我想按照每个帖子的评论数量按升序 降序对帖子进行排序 我该如何在 Laravel 中执行此操作 我不想添加字段post表来跟踪每个帖子的评论数量
  • 如何在 Laravel 中基于 application/json 标头加载路由

    我正在使用application json标头来控制我的控制器在收到请求时的行为 我需要在单元测试中的 POST 中包含application json header 我试过了 public function testStore this
  • Laravel 5.3 Eloquent 事务和外键限制

    我正在从事一个更大的项目 我们在一个 Postgres 数据库中有多个模式 我们在模式之间创建了外键 这是一个例子 gt 我们有公司模式和用户模式 公司模式有company users表 该表对user users表有外键限制 CREATE
  • Laravel:类控制器不存在

    我创建了一个简单的控制器并定义了一个函数 但是当我运行它时 它返回一个错误 指出控制器不存在 在我的 web php 中分配一条路线
  • laravel cron 使用错误

    Laravel 错误 cron 使用 usr bin php home sitevk artisan 计划 运行 1 gt gt dev null 2 gt 1 应用 控制台 内核 use Illuminate Console Schedu
  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • 将策略应用到资源控制器

    我有一个CRUD资源定义通过Route resource User UserController 既然可以生成CRUDGates and Policies 有没有办法应用这样的Gate Policy 以便将相应的Gate Policy应用于
  • 使用 Mock 对 Laravel 5 Mail 进行单元测试

    有没有办法在 Laravel 5 中测试 Mail 尝试了我在互联网上看到的唯一合法的模拟示例 但它似乎只适用于 Laravel 4 下面的当前代码 mock Mockery mock Swift Mailer this gt app ma
  • Apache 虚拟主机始终重定向到 /dashboard

    我遇到的问题似乎是一个常见问题 但我找到的任何解决方案似乎都不适合我的情况 我正在尝试设置一个虚拟主机 以便我可以通过 mytestdomain local 访问我的 Laravel 安装的公共文件 但是当我在 google chrome
  • 拉拉维尔; “SQLSTATE[HY000] [2002] 连接被拒绝”

    我在 OSX 主机上设置了 homestead 2 0 并使用 Sequel Pro 我可以进行迁移并确认数据已在Sequel Pro中迁移 因此看起来数据库连接没有问题 但是 一旦我尝试从 Laravel 4 2 应用程序获取数据 它就无
  • Laravel Passport,通过密码客户端进行多个连接

    我无法理解如何使用 Laravel Passport 通过密码客户端为同一用户实现多个连接 我有一个移动应用程序 需要与基于 Laravel 的 API 进行通信 我的用户在首次启动应用程序时必须输入他们的login and passwor
  • 运行一个特定的 Laravel 迁移(单个文件)

    我的项目中有 5 次迁移 我只想运行这些迁移之一 是否可以将单个文件的名称传递给php artisan migrate命令 您可以将迁移放入更多文件夹中并运行如下命令 php artisan migrate path app databas
  • Laravel - 停止并发访问记录

    在 Laravel 中 有什么方法可以停止同时与同一条记录交互 例如 如果用户 A 正在编辑一条记录 那么我同时需要阻止用户 B 编辑同一条记录 注意 我在 Laravel 5 2 中使用 SESSION DRIVER file 目前大约有
  • 如果您编辑/更新该特定对象,laravel 唯一名称表示已被占用

    我有一个投资组合表 我没有在 url 中显示投资组合的 id 而是使用 getRouteKeyName 显示投资组合的名称 所以我希望该名称是唯一的 否则如果它已经存在 它可能会显示错误的投资组合 我将名称字段的规则设置为唯一 如果我现在编

随机推荐

  • PDO 和 IS NOT NULL 函数

    我是 PDO 新手 我想知道是否有相当于 mysql 语句的语句来检查参数是否不为空 例如 SELECT FROM table WHERE param IS NOT NULL 我试过这个 pdo gt prepare SELECT FROM
  • Javascript:除了“use strict”之外,还有哪些其他“use”指令?

    Besides use strict 还有哪一个use有指令吗 指令序言 JavaScript 引擎可能使用的部分 中还有一些示例 use strict use asm 莫斯拉的asm js http asmjs org 是该语言的一个子集
  • 存储应用程序配置设置

    在 AngularJS 中存储应用程序配置设置的最佳位置是什么 这可能是应用程序常量 查找等 可以从控制器和服务或工厂使用 我可以创建一个单独的服务来存储和检索这些东西 但我想知道是否有另一个合适的地方来存储和检索这些东西 您可以使用持续的
  • 如何检测 iPhone 中按下的键盘按键?

    我想检测用户何时按下任何键盘键 仅在键入任何字符时调用的任何方法 而不是在显示键盘时调用的方法 Thanks 您可以在用户每次按键时直接处理键盘事件 Swift 对于文本字段 请使用以下委托方法 func textField textFie
  • 为什么我的 Visual Studio .obj 文件比输出的 .exe 文件大?

    作为背景 我是一个开源项目的开发人员 一个名为开放框架 http www openframeworks cc 这是不同库的包装器 例如 opengl quicktime freeImage 等 在下一个版本中 我们添加了一个名为 POCO
  • 在内核 OpenCL 中实现 FIFO 的最佳方法

    目标 在 OpenCL 中实现下图所示 OpenCl 内核所需的主要内容是将系数数组和临时数组相乘 然后最后将所有这些值累加为 1 这可能是最耗时的操作 并行性在这里非常有帮助 我正在为内核使用一个辅助函数来执行乘法和加法 我希望这个函数也
  • 限制文本框中每行的最大字符数

    假设我有以下内容
  • 如何创建“抽象字段”?

    我知道java中不存在抽象字段 我也读过这个问题 https stackoverflow com questions 2211002 why not abstract fields但提出的解决方案并不能解决我的问题 也许没有解决方案 但值得
  • 确定性时的虚函数开销 (c++)

    我知道虚拟函数本质上是包含在 vtable 中的函数指针 这使得多态调用由于间接等原因而变慢 但我想知道当调用是确定性时编译器的优化 我所说的确定性是指以下情况 该对象是一个值而不是引用 因此不可能存在多态性 struct Foo virt
  • Tensorflow:np数组的next_batch函数

    我的火车数据为 xTrain numpy asarray 100 1 5 6 yTrain numpy asarray 200 2 10 12 如何定义 next batch size 方法以从训练数据中获取随机元素的 size 个数 您可
  • 在 numpy 中索引多个不相邻的范围

    我想从一维 numpy 数组 或向量 中选择多个不相邻的范围 Suppose gt gt gt idx np random randint 100 size 10 array 82 9 11 94 31 87 43 77 49 50 当然
  • 自动订阅应用内购买:恢复后续续订

    根据 Apple 应用内购买编程指南 App Store 每次续订订阅时都会创建一个单独的交易 当您的应用程序恢复以前的购买时 Store Kit 会将每笔交易传送到您的应用程序 假设我的应用程序订阅仅限客户端 无服务器组件 验证后续续订是
  • { [FacebookTokenError:此授权码已被使用。]

    我有一个航行应用程序 我正在尝试实现 Facebook 登录 当我单击 使用 facebook 登录 按钮时 出现此错误 error A server error occurred in a request error FacebookTo
  • PHP cURL:CURLOPT_CONNECTTIMEOUT 与 CURLOPT_TIMEOUT

    PHP 有以下两个与超时相关的选项 CURLOPT CONNECTTIMEOUT and CURLOPT TIMEOUT PHP 网站上的描述有点模糊 有什么不同 使用现实世界的示例 假设您通过 cURL 将 GET 变量发送到 URL 并
  • 有没有办法理解安装错误代码的实际含义?

    我正在尝试应用内更新功能 但收到 FAILED 安装状态和 100 安装错误代码 有什么办法让我知道可能是什么原因造成的吗 我实现了灵活的应用内更新 并记录了每个步骤 遵循 Android 开发者教程here https developer
  • jQuery 自动完成标记插件,如 StackOverflow 的输入标记? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 哪些解决方案可以实现与 SO 用于输入标签相同的自动完成功能 有可以处理一个单词的插件 但我还没有看到
  • 需要从表单生成的工作表中移动行

    我有一个调查表 我需要我的团队查看一次 但之后我希望我的团队将其设置为 已关闭 的行保存到存档表中 过去 我在其他工作表中使用过此脚本 但它似乎不适用于表单链接工作表 经过研究 我发现您无法从表单链接表中剪切 但可以删除行 我的理论是脚本正
  • 当implicitly_wait不起作用时使用find_element_by_link_text出现NoSuchElement异常?

    python 和 Selenium 以及相关编程的新手 我正在尝试自动化硒以点击特定链接 在本例中 我希望它点击与链接文本 B 关联的链接 li a href B a 在这个网站上 http www lw com http www lw c
  • Azure 中的 ASP.NET MVC 4 和 Web API - 未找到 HTTP 资源

    使用 Visual Studio 2012 我创建了一个简单的 Windows Azure 项目 云项目 其中包含 ASP NET MVC 4 网站 我没有对模板进行任何更改 我只是尝试使用Azure 网站 https www window
  • 在 Laravel 5.1 中将模型保存到数据库之前执行一些操作

    在 Laravel 5 1 模型中 在将数据写入数据库之前 我该如何做一些事情 例如修改某些数据字段或进行更多验证 关于该问题的文档很难在实际应用中使用 http laravel com docs 5 1 eloquent events h