Проверьте, существует ли экземпляр модели laravel в БД в конструкторе
Есть ли способ проверить, получена ли модель Laravel из БД или создана с new
команда в своем конструкторе?
Я пробовал с $this->exists
но в __construct
это всегда возвращается false
...
Это код:
function __construct($attributes = array())
{
parent::__construct($attributes);
$this->testVar = $this->exists;
}
3 ответа
Из ваших комментариев я думаю, что вы хотите сделать, это добавить прослушиватель событий, который создаст ваш Element
когда Aircraft
создано.
Это может выглядеть так (в вашем Aircraft.php
Красноречивая модель):
protected static function boot()
{
static::created( function ($aircraft) {
Element::create([
'aircraft_id' => $aircraft->id,
]);
});
}
Таким образом, всегда, когда вы создаете новый Aircraft
через Eloquent автоматически создаст и свяжет Element
,
Просто вызовите соответствующую функцию конструктора в этом классе: Constructor:
public function __construct()
{
$this->model = $this->checkModel();
}
Функция сеттера:
public function checkModel()
{
// do your staff
}
Есть модельные события, которые вы можете подключить, и одно специально для retrieved
,
Смотрите документы по модельным событиям.
Полученное событие сработает, когда существующая модель будет извлечена из базы данных.