Domanda

Se ho un modello eloquente definito nella mia applicazione che ha un numero di relazioni diverse impostate con altri tipi di modelli, come posso ottenere informazioni tutte quelle relazioni senza sapere nient'altro sul modello con cui ho a che fare? .

Ad esempio, immagina un semplice modello di transazione che può avere molte linee e appartengono anche a un singolo utente.

Ora, data un'istanza del modello di transazione (popolato o impopolato), come posso scoprire le relazioni che ha gli altri modelli?

Solo per essere chiaro, non voglio recuperare i dati effettivi correlati, voglio solo scoprire a quale classe si riferisce ogni relazione e se è uno a molti, molti a molti ecc.

Qualsiasi consiglio apprezzato.

Grazie

È stato utile?

Soluzione

I modelli eloquenti di Laravel non funzionano in questo modo, le relazioni sono definite dai metodi all'interno del modello e non sono caricati automaticamente dal modello all'licitanza, quindi il requisito di chiamare effettivamente questi metodi quando si desidera utilizzare una relazione specifica.

.

Quando istanziare una classe di modelli ha definito zero relazioni.Questo può essere visualizzato dal seguente:

$user = new User();

print_r($user->getRelations());

//Output : empty array
.

Come puoi vedere il modello è beatamente inconsapevole di qualsiasi relazione che può o non può essere dichiarata nei metodi di relazione.Quando chiami una relazione di modelli:

$user = new User();

$user->find(1)->roles()->get();
.

Eloquente imposta la relazione sul modello utilizzando un metodo setRelation($relation, $value) che porta il nome del metodo chiamato come primo argomento e il ritorno di quel metodo come secondo.Fornendo così il contesto per la relazione che non esiste prima di chiederlo specificamente.

So che questo non è quello che stai sperando di sentire, ma non c'è modo di farlo con eloquente.

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