Модель с именем Event в Laravel

Рейтинг: 1Ответов: 1Опубликовано: 07.10.2014

У меня есть модель, которая назвается Event:

class Event extends Eloquent {
    // ...
}

Внутри неё содержатся правила и сообщения для валидатора, поэтому, чтобы проверить данные в контролере, я делаю вот так:

$validator = Validator::make(Input::all(), Event::$rules, Event::$messages);

В результате чего у меня возникает ошибка:

Access to undeclared static property: Illuminate\Support\Facades\Event::$rules

Я понимаю, что это из-за того, что в Laravel уже используется класс Event и что именно в нем он пытается найти переменную $rules.

Вопрос: как сделать так, чтобы можно было использовать модель с именем Event?

Конечно, можно назвать модель myEvent, но это как-то некрасиво.

Ответы

▲ 2

Вынесите модели в пространство имён.

// composer.json
{
    "autoload": {
        "psr-4": {
            "Models\\": "app/models",
        }
    }
}

Обновите автозагрузчик: composer dump-autoload -o

Модели:

// app/models/Event.php
<?php

namespace Models; // думаю, сами знаете как это делается

class Event extends \Eloquent {}

Не забудьте о настройках авторизации (и других..):

// app/config/auth.php
<?php

return [
    'model' => 'Models\User',
];

Да, похоже, легче переименовать модель, но это же может быть не последнее совпадение.