Cómo cargar modelos en Laravel?
-
21-12-2019 - |
Pregunta
Empecé a estudiar Laravel y se topó con un problema a partir de modelos.Cómo cargar?Por ejemplo, en CodeIgniter, yo lo he utilizado como $model = $this->load->model('some_model')
.En Laravel cuando me llaman desde el controlador como Sites::OfUser()
trabajo fino, pero cuando me llaman Sites::getId()
se dice que el método debe ser estático...Es posible llamar a método, sin estática o necesito crear fachadas para cada modelo?
Mi modelo se parece a esto:
namespace Models;
use Eloquent;
class Sites extends Eloquent {
public function scopeOfUser($query)
{}
public function getId($name)
{}
}
Solución
Para el método estático--
$tipo = Sitios ::scopeOfUser($consulta);
y si usted desea normal como codeingiter a continuación, utilice--
$modelo = new Sitios ();
$tipo = $modelo->scopeOfUser($consulta);
Otros consejos
Por supuesto, usted puede hacer un método estático en el modelo, y hacer algo estático de trabajo (get ID nombre o lo que sea).
Eso no es problema.
Sin embargo, usted debe declarar estática si desea utilizar el ::
, que usted está haciendo no.
public static /* <-- this */ function getId($name)
{
// Do work
// return $result;
}
Si desea acceder a un método con ::
, usted tendrá que hacer es un método estático o crear un Fachada.
La razón por la que Sites::OfUser()
es "trabajo", es porque ya tienen el prefijo que con el método de scope
.
Los ámbitos de permiten fácilmente re-uso de consulta de la lógica en sus modelos.A definir un ámbito, simplemente prefijo de un modelo con el método de
scope
.
Si desea utilizar Fachadas puedes seguir mi respuesta aquí ¿cómo crear una Fachada.