ларавел

Laravel BadMethodCallException Метод [find] не существует

Laravel BadMethodCallException Метод [find] не существует

Проблема

Я пытался получить модель Eloquent из базы данных, но продолжаю BadMethodCallExceptionMethod [найти] не существует.

Вот что я пробовал до сих пор:

приложение пространства имен;
используйте Illuminate \ Database \ Eloquent \ Model;
используйте Приложение \ Организация;
class User extends Model
/ **
* Таблица базы данных, используемая моделью.
*
* @var строка
* /
защищенная таблица $ = 'пользователи';
/ **
* Атрибуты, исключенные из формы JSON модели.
*
* @var массив
* /
protected $ hidden = array ('пароль');
общественные организации ()

return $ this-> ownToMany (Организация :: класс);

Это базовый класс User, который поставляется с каждым новым проектом Laravel. После создания нового пользователя я ясно вижу, что пользователь с ID3 существует в базе данных. Однако когда я делаю следующее, я получаю BadMethodCallException Метод [find] не существует

class User extends BaseController
публичная функция getUser ($ id)

$ my_user = Пользователь :: find ($ id);
return view ('пользователи.index ', array (' user '=> $ my_user));

Файл "Мои маршруты" routes \ web.php:

Route :: get ('пользователь / идентификатор', '[электронная почта защищена]');
Route :: get ('/', функция ()

return View :: make ('тест');
);

Решение

В этой реализации есть несколько проблем, из-за которых вы можете получать BadMethodCallException Метод [find] не существует исключение.

После этого вы сможете получить доступ к своей модели App \ User, как и предполагали.

Дальнейшее объяснение (только для образовательных целей)

Как вы знаете, веб-разработка никогда не была шоу одного актера. Обычно вы можете рассчитывать на сотрудничество с другими разработчиками примерно в 90% случаев. Чтобы проект был успешным, вы должны убедиться, что все соблюдают общие правила кодирования.

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

Я бы посоветовал вам попытаться прочитать больше кода других людей, прежде чем вы начнете писать свой, просто чтобы получить представление о лучших отраслевых практиках.

Некоторые правила являются обязательными, а некоторые оставлены на усмотрение команды, чтобы решить, как они хотят подойти.

Глядя на проблему сверху, вы заметите, что все классы должны быть написаны в StudlyCaps, поэтому UserController, а не user_controller .

И это пример обязательного правила, которому нужно следовать.

Теперь пример того, что вы как команда можете определить в качестве внутреннего правила, - это то, как вы называете свои классы, методы и переменные.

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

Мой личный совет: не бойтесь иметь более длинный класс или имя метода. Если вам нужен комментарий, объясняющий ваш метод, то имя вашего метода, вероятно, может быть лучше.

Примером этого является то, что если вам нужно получить пользователей из базы данных с некоторым дополнительным условием, возможно, это пользователи старше 50 лет, тогда не называйте свой метод getUsers . Лучше назвать это getAllUsersOver50YearsOld .

Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...
Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...
Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...