2016-01-05 6 views
1

Я довольно новичок в Slim, все еще пытаюсь изучить его и решил переделать старое приложение, которое я сделал. Я пытаюсь использовать Eloquent, но быстро потерялся, делая то, что не думаю, что это очень сложно. Приложение, которое у меня было, было слишком сложным, чтобы учиться, поэтому я вернулся к этому учебнику здесь, поскольку это более или менее то, что я пытаюсь сделать, использовать модели, расширяющие один другой класс, чтобы увидеть, могу ли я даже получить эту работу : http://www.richardbagshaw.co.uk/laravel-user-types-and-polymorphic-relationships/ Это просто расширение типа пользователя.Использование полиморфных отношений в Eloquent для расширения модели

Я не могу. Это, конечно, учебник для Laravel, поэтому я знаю, что это будет немного иначе. Я воссоздал базу данных (за вычетом некоторых посторонних вещей, таких как имя пользователя и пароль) и достаточно заполнил ее. Я скопировал код для классов User, Freelancer и Employee, изменив только класс User, удалив лишние методы, которые, как представляется, не требуются для этого (я думаю), как показано ниже.

namespace eloquent\eloquent; 

class User extends Eloquent implements { 

    protected $table = 'users'; 

    public function userable() 
    { 
     return $this->morphTo(); 
    } 
} 

Если я это сделать:

$user = $app->user->find(1)->firstName; 
echo $user 

Он работает, как ожидалось. Это не:

$user = $app->user->find(1); 
echo $user->userable->dayrate; 

Это дает мне это: Фатальная ошибка: 'Сотрудник' класс не найден в D: \ Apache24 \ HTDOCS \ красноречивым \ поставщика \ Осветите \ базы данных \ Eloquent \ Model.php на линии 900

Однако он правильно идентифицирует, ищет ли он сотрудника или внештатного сотрудника, который, как я полагаю, исходит из столбца базы данных userable_type.

Вопрос: Как я могу получить доступ к полям подкласса? Я делаю это совершенно неправильно, или есть лучший способ?

+0

Так никто здесь не знает, как использовать Eloquent Illuminate с Slim в чем-то более, чем в очень простом стиле ??? Кажется, это должно быть действительно действительно базовым ?! – danny2327

ответ

0

В конце концов я вернулся к этому вопросу и смог решить его на всякий случай, если у кого-то другая проблема. Проблема заключалась в том, что он искал точную строку в базе данных как пользовательский тип, в данном случае Employee. То, что действительно нужно, - это поиск всей строки, содержащей пространство имен. Добавив все пространство имен в запись базы данных как userable_type (т. Е. Eloquent \ eloquent \ Employee), он подбирает его и может найти модель ... Я изучил варианты в Eloquent, такие как MorphClass, но это, похоже, не делает Мне нужно.

Я на самом деле не реализовал это в проекте, над которым я еще работаю, но я полагаю, что, возможно, я оставлю всю строку там, потому что я ленивый, и это не критически важный, приложение, или попытаться сделать что-то с промежуточным программным обеспечением или ??. В любом случае, надеюсь, что это поможет кому-то другому.

Смежные вопросы