tachini
@tachini
Программист

Почему конструктор вызывается 3 раза после метода firstOrCreate в Laravel 5?

Есть конструктор в классе User:
public function __construct() {
        parent::__construct();
        echo "__construct";
}

получаем объект User
$users = \App\User::firstOrCreate(['email' => 'pupkin@vasya.com']);

Получаем результат:
__construct__construct__construct
Почему так происходит?

И еще одно, если объекта нет в базе, при наличия переопределенного конструктора возникают ошибки, а если нет конструктора, все нормально.

PDOException in Connection.php line 362:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (``.data`users`, CONSTRAINT `users_referrer_foreign` FOREIGN KEY (`referrer`) REFERENCES `users` (`id`))

QueryException in Connection.php line 624:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`data`.`users`, CONSTRAINT `users_referrer_foreign` FOREIGN KEY (`referrer`) REFERENCES `users` (`id`)) (SQL: insert into `users` (`updated_at`, `created_at`) values (2015-06-24 09:02:51, 2015-06-24 09:02:51))
  • Вопрос задан
  • 463 просмотра
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
Потому что в модели всё смешали: здесь фасады для вызова типо как через статику, здесь query builder для запросов, здесь коллекции для работы с одной или пачкой записей, здесь сама модель с аттрибутами-метаторами-слушателями. И для сброса состояний часто используется пересоздание объекст в стиле return new static;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@orxan80
скорее всего там вызывается класс не один раз, в вызове классов наследников тоже так происходит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы