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)
    {}
}
.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top