Aggiungi riga alla raccolta eloquente per impostazione predefinita in base alla query Raw
Domanda
Nelle mie collezioni eloquenti, vorrei aggiungere una colonna extra chiamata "modificabile"."Modificabile" dovrebbe essere incluso in ogni query che corro su alcuni modelli.Lo spettacolo "modificabile" è vero o falso, in base a una query di radice.
Quindi ho una query che dovrebbe essere gestita in ogni query sui miei modelli.Aggiunta di una colonna extra alla mia collezione.Il valore di "modificabile" è determinato da una query di radice.
Qual è il modo migliore per farlo?
Soluzione
È possibile aggiungere un metodo addSelect()
alla catena della query per includere l'attributo personalizzato.
Qualcosa come
$results = YourModelClass::select("*")
->addSelect(DB::raw("IF(condition,1,0) AS editable"))
->get();
.
Nel caso precedente, si sostituirebbe condition
con la relativa dichiarazione SQL che verrebbe valutata per fila come parte della query.Se l'istruzione è vera, quindi editable = 1
e se false quindi editable = 0
per ogni riga restituita alla tua raccolta.
Modifica: ho appena visto che vuoi questo su ogni query, quindi probabilmente avresti bisogno di un ambito / tratto globale per i tuoi modelli, ma la tecnica di cui sopra per includere l'attributo extra dovrebbe essere il correttouno.
Non coprei / incolla la documentazione sull'aggiunta di ambiti globali, che è nei Documenti Core Laravel e sono sicuro che puoi trovarlo.
Altri suggerimenti
È possibile aggiungere un getter personalizzato al tuo modello:
public function getEditableAttribute()
{
/* return result from your raw query here */;
}
.