Laravel 7 Query with() e utilizzando Where()
Ciao ragazzi, ho una domanda simile a questa
$query = Transaction::with(['customer', 'merchant', 'batch'])
->select(sprintf('%s.*', (new Transaction)->table));
Devo filtrare la transazione in base all'iso_id che appartiene all'utente corrente che ha effettuato l'accesso.
$query = Transaction::with(['customer', 'merchant', 'batch'])
->select(sprintf('%s.*', (new Transaction)->table))
->where('merchant.iso_id', '=', auth()->user()->isIso());
L'iso_id che devo confrontare è all'interno della tabella del commerciante
auth()->user()->isIso() restituisce l'iso_id corretto se true o invia false in caso contrario
Quindi il mio primo tentativo è stato usare where('merchant.iso_id', '=', auth()->user()->isIso())
Ma ciò restituisce che la colonna non esiste perché per qualche motivo non passa dal modello di transazione a quello del commerciante.
Non sono sicuro di come utilizzare le cose all'interno di with() come selettore per il mio where()
Qualsiasi aiuto sarebbe apprezzato!
Risposte
Prova a utilizzare whereHasper aggiungere il vincolo:
$query = Transaction::with(['customer', 'batch'])
->whereHas('merchant', function ($q) {
$q->where('iso_id', auth()->user()->isIso());
})
->select(sprintf('%s.*', (new Transaction)->table))
->get();