Aggiungi riga alla raccolta eloquente per impostazione predefinita in base alla query Raw

StackOverflow https://stackoverflow.com//questions/25010933

  •  20-12-2019
  •  | 
  •  

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?

È stato utile?

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 */;
}
.

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