Я довольно новичок в Slim, все еще пытаюсь изучить его и решил переделать старое приложение, которое я сделал. Я пытаюсь использовать Eloquent, но быстро потерялся, делая то, что не думаю, что это очень сложно. Приложение, которое у меня было, было слишком сложным, чтобы учиться, поэтому я вернулся к этому учебнику здесь, поскольку это более или менее то, что я пытаюсь сделать, использовать модели, расширяющие один другой класс, чтобы увидеть, могу ли я даже получить эту работу: http://www.richardbagshaw.co.uk/laravel-user-types-and-polymorphic-relationships/ Это просто расширение типа пользователя.
Я не могу. Это, конечно, учебник для 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 \ vendor \ illuminate \ database \ Eloquent \ Model.php в строке 900
Однако он правильно определяет, ищет ли он сотрудника или фрилансера, который, как я полагаю, исходит из столбца базы данных userable_type.
Вопрос в том, как я должен обращаться к полям подкласса? Я делаю это совершенно неправильно, или есть лучший способ?