El método de Laravel Badmethodcallexception [encontrar] no existe

El método de Laravel Badmethodcallexception [encontrar] no existe

Problema

He estado tratando de obtener un modelo elocuente de la base de datos, pero sigue entrando en BadmethodcallexceptionMethod [encontrar] no existe.

Esto es lo que probé hasta ahora:

aplicación de espacio de nombres;
use Illuminate \ Database \ ELOQUENT \ Model;
usar la aplicación \ organización;
El usuario de la clase extiende el modelo
/**
* La tabla de base de datos utilizada por el modelo.
*
* @var cadena
*/
protegido $ table = 'usuarios';
/**
* Los atributos excluidos del formulario JSON del modelo.
*
* @Var Array
*/
protegido $ hidden = array ('contraseña');
Organizaciones de funciones públicas ()

devolver $ this-> pertenecerstomany (organización :: class);

Esta es una clase de usuario básica que viene con cada nuevo proyecto de Laravel. Después de crear un nuevo usuario, puedo ver claramente que el usuario con ID3 existe en la base de datos. Sin embargo, cuando hago lo siguiente, termino con el El método de badmethodcallexception [encontrar] no existe

El usuario de la clase extiende Basecontroller
Función pública GetUser ($ ID)

$ my_user = user :: find ($ id);
Vista de retorno ('usuarios.índice ', array (' user '=> $ my_user));

Mis rutas rutas de archivo \ web.PHP:

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

Vista de retorno :: Make ('Test');
);

Solución

Hay algunos problemas con esta implementación que podrían estar causando que reciba El método de badmethodcallexception [encontrar] no existe excepción.

  • Debe seguir las mejores prácticas para nombrar a sus controladores como su modelo + palabra "controlador" para que termine con un UserController en lugar de solo usuario .
  • La clase de usuario a la que se refiere aquí no está realmente relacionada con su aplicación \ Modelo de usuario. Si lo nota, nunca incluyó explícitamente su modelo. Entonces, suponiendo que ya haya solucionado el punto anterior, necesitaría incluir la clase de UserControlador en su UserController . Solo entonces puedes hacer nuevos objetos usando esa clase. Entonces, en su UserController, vaya y agregue Use App \ User; en la cima. (Observe cómo incluí aplicaciones \ organización)
  • Una vez que lo haya arreglado, debe ejecutar el compositor dump -o para regenerar el compositor.Bloquear un archivo que ayudará a acelerar la carga de sus clases.

Después de hacerlo, debería poder acceder a su aplicación \ Modelo de usuario como usted pretendía.

Explicación adicional (solo para fines educativos)

Como saben, el desarrollo web nunca ha tenido la intención de ser un espectáculo de un solo hombre. Generalmente puede esperar colaborar con otros desarrolladores aproximadamente el 90% del tiempo. Para que el proyecto tenga éxito, debe asegurarse de que todos sigan las reglas de codificación generales.

De las reglas se tratará de nombrar convenciones y entiendo que mantener al día con una convención de nomenclatura definitiva requiere mucho esfuerzo y puede perder mucho tiempo del equipo hasta que todos puedan entenderlos y seguirlos. Esto es especialmente difícil para los nuevos desarrolladores que se unen al equipo.

Le sugiero que intente leer más del código de otras personas antes de comenzar a escribir el suyo, solo para tener una idea de las mejores prácticas de la industria.

Algunas reglas son obligatorias y otras se dejan al equipo para decidir cómo quieren acercarse.

Mirando el problema de arriba, notará que todas las clases deben escribirse en un studlycaps, por lo que UserController y no user_controller .

Y este es un ejemplo de una regla obligatoria a seguir.

Ahora, un ejemplo de lo que usted como equipo podría definir como su regla interna es cómo nombra sus clases, métodos y variables.

Si se espera que un proyecto crezca con el tiempo, ciertamente puede esperar muchas entidades diferentes que de una forma u otra incluyen un usuario, por lo que es importante que no se les ocurra nombres vagos para sus clases, métodos y variables.

Mi consejo personal aquí es; No tengas miedo de tener una clase más larga o un nombre de método. Si necesita tener un comentario que explique su método, entonces su nombre de método probablemente pueda ser mejor.

Un ejemplo de esto es que si necesita obtener usuarios de una base de datos con alguna condición adicional, tal vez esos son usuarios mayores de 50 años, entonces no nombre su método getUsers . Una mejor manera de nombrarlo es .