【问题标题】:Detect if model is being created or updated inside a method检测是否在方法内创建或更新模型
【发布时间】:2013-12-11 12:27:33
【问题描述】:

在我的 BaseModel 中扩展了 Eloquent 我有 validate 方法。

我的问题是,如果正在创建或更新模型,我如何在此方法中检测到?

我知道并且我使用模型事件,但不知道如何实现相同的内部方法。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    Laravel 有一个名为 exists() 的方法来检查模型是否来自数据库。

    如果模型创建或更新,以下将返回 true。

    $model->exists
    

    更新模型:

    $affectedRows = User::where('votes', '>', 100)->update(array('status' => 2));
    
    dd($affectedRows);
    

    参考:

    http://laravel.com/docs/eloquent#insert-update-delete

    【讨论】:

    • 在验证之前按照他说的做...$this->exists() 是真还是假。
    • 好吧,我一定是做错了什么,总是为我返回 true。
    【解决方案2】:

    您可以使用getOriginal() 查看该模型中是否已设置属性。

    根据您获得的内容,您可以知道它是新模型还是现有模型。


    getOriginal() 文档:

    http://laravel.com/api/source-class-Illuminate.Database.Eloquent.Model.html#2114-2124

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2020-03-07
      相关资源
      最近更新 更多