检查构造函数中的DB上是否存在laravel模型实例

时间:2018-03-09 08:33:54

标签: laravel laravel-5 eloquent laravel-eloquent

有没有办法检查是从数据库中检索Laravel模型还是在其构造函数中使用new命令创建的?

我尝试使用$this->exists,但在__construct中,它始终返回false ...

这是代码:

function __construct($attributes = array())
{
    parent::__construct($attributes);
    $this->testVar = $this->exists;
}

3 个答案:

答案 0 :(得分:0)

您可以加入模型事件,其中一个专门用于retrieved

请参阅Model Events上的文档。

  

从数据库中检索现有模型时,将触发检索到的事件。

答案 1 :(得分:0)

只需在构造函数中调用该类中的正确函数: 构造:

public function __construct()
    {
        $this->model = $this->checkModel();
    }

setter函数:

public function checkModel()
    {
        // do your staff
    }

答案 2 :(得分:0)

根据您的评论,我认为您要做的是添加一个事件监听器,在创建Graph exploer时创建Element

它可能看起来像这样(在你的Aircraft雄辩模型中):

Aircraft.php

通过Eloquent创建新的protected static function boot() { static::created( function ($aircraft) { Element::create([ 'aircraft_id' => $aircraft->id, ]); }); } 时,它会自动创建并关联Aircraft