Come caricare i modelli a Laravel?
-
21-12-2019 - |
Domanda
Ho iniziato a studiare Laravel e corse in un problema usando i modelli.Come caricarli?Ad esempio, nel codice, l'ho usato come $model = $this->load->model('some_model')
.A Laravel quando lo chiamo dal controller come Sites::OfUser()
funziona bene, ma quando chiamo Sites::getId()
, dice che il metodo dovrebbe essere statico ...
È possibile chiamare il metodo senza statico o ho bisogno di creare facciate per ogni modello?
Il mio modello è simile a questo:
namespace Models;
use Eloquent;
class Sites extends Eloquent {
public function scopeOfUser($query)
{}
public function getId($name)
{}
}
. Soluzione
per il metodo statico--
.$ Type= Sites :: ScopeOfUser ($ query);
E se vuoi normale come il codeinginer, quindi utilizzare--
.$ Model= Nuovi siti ();
$ Type= $ Model-> ScopeOfUser ($ Query);
Altri suggerimenti
Puoi ovviamente creare un metodo statico nel modello e fare un lavoro statico in esso (ottenere ID per nome o qualsiasi altra cosa).
Non è un problema.
Tuttavia, è necessario dichiararlo statico se si desidera utilizzare ::
, che non stai facendo.
public static /* <-- this */ function getId($name)
{
// Do work
// return $result;
}
. Se si desidera accedere a un metodo con ::
, è necessario renderlo un metodo statico o creare un facciata.
Il motivo per cui Sites::OfUser()
è "Lavorendo" è perché hai prefissato quel metodo con scope
.
.Scopes Consentono di riutilizzare facilmente la logica della query nei modelli.Per Definire un ambito, è sufficiente prefisso un metodo del modello con
scope
.
Se si desidera utilizzare le facciate che puoi seguire la mia risposta qui su come creare una facciata.