Método de BadmethodCallexception de BadmethodCallex [Find] não existe

Método de BadmethodCallexception de BadmethodCallex [Find] não existe

Problema

Eu tenho tentado obter um modelo eloquente do banco de dados, mas continuo entrando BadmethodCallexceptionMethod [Find] não existe.

Aqui está o que eu tentei até agora:

App de espaço para nome;
Use iluminado \ Database \ Eloquent \ Model;
Use App \ Organization;
classe User estende o modelo
/**
* A tabela de banco de dados usada pelo modelo.
*
* @var string
*/
$ tabela protegida = 'usuários';
/**
* Os atributos excluídos da forma JSON do modelo.
*
* Array @var
*/
$ protegido Hidden = Array ('Senha');
Organizações de função pública ()

retornar $ this-> pertencente (organização :: classe);

Esta é uma classe de usuário básica que vem com todos os novos projetos de Laravel. Depois de criar um novo usuário, posso ver claramente que o usuário com ID3 existe no banco de dados. No entanto, quando faço o seguinte, acabo com o Método de BadMethodCallexception [Find] não existe

classe Usuário estende Basecontroller
Função pública getuser ($ id)

$ my_user = user :: find ($ id);
Return View ('Usuários.índice ', Array (' usuário '=> $ my_user));

Minhas rotas rotas de arquivo \ web.PHP:

Rota :: get ('user/id', 'user@getUser');
Rota :: get ('/', function ()

Return View :: Make ('Test');
);

Solução

Existem alguns problemas com esta implementação que podem estar fazendo com que você receba Método de BadMethodCallexception [Find] não existe exceção.

  • Você deve seguir as práticas recomendadas para nomear seus controladores como seu modelo + palavra "controlador" para que você termine com um userController em vez de apenas usuário .
  • A classe de usuário que você está se referindo aqui não está realmente relacionada ao seu aplicativo \ Modelo de Usuário. Se você notar, você nunca incluiu explicitamente seu modelo. Então, assumindo que você já corrigiu o ponto anterior, você precisaria incluir a classe TheUser no seu UserController . Somente então você pode fazer novos objetos usando essa classe. Portanto, no seu userController, vá e adicione o App \ user; no topo. (Observe como incluí o App \ Organization)
  • Depois de consertá -lo, você deve executar o compositor de despejo -O para regenerar o compositor.Bloquear o arquivo que ajudará a acelerar o carregamento de suas aulas.

Depois disso, você poderá acessar seu aplicativo \ Modelo de usuário como pretendido.

Explicações adicionais (apenas para fins educacionais)

Como você sabe, o desenvolvimento da web nunca pretendeu ser um show único. Geralmente, você pode esperar colaborar com outros desenvolvedores cerca de 90% das vezes. Para que o projeto seja bem -sucedido, você deve garantir que todos estejam seguindo as regras gerais de codificação.

Nas regras, será sobre nomear convenções e eu entendo que acompanhar uma convenção de nomeação definitiva requer muito esforço e pode desperdiçar muito do tempo da equipe até que todos possam entender e segui -los. Isso é especialmente difícil para novos desenvolvedores que se juntam à equipe.

Eu sugeriria que você tente ler mais do código de outras pessoas antes de começar a escrever o seu, apenas para ter uma noção das melhores práticas da indústria.

Algumas regras são obrigatórias e outras são deixadas para a equipe para decidir como querem se aproximar.

Olhando para a edição de cima, você notará que todas as classes devem ser escritas em um StudlyCaps, para que o UserController e não user_controller .

E este é um exemplo de regra obrigatória a seguir.

Agora, um exemplo do que você como equipe poderia definir como sua regra interna é como você nomeia suas classes, métodos e variáveis.

Se é esperado que um projeto cresça com o tempo, você certamente pode esperar muitas entidades diferentes que, de uma maneira ou de outra.

Minha dica pessoal aqui está; Não tenha medo de ter uma aula mais longa ou um nome de método. Se você precisar ter um comentário que explique seu método, o nome do seu método provavelmente pode ser melhor.

Um exemplo disso é que, se você precisar levar usuários de um banco de dados com alguma condição adicional, talvez sejam usuários com mais de 50 anos, não nomeie seu método getusers . Uma maneira melhor de citar é getalluserSover50yearsold .