Laravel 7 Consulta com () e usando Where ()
Aug 26 2020
Olá pessoal, tenho uma dúvida que se parece com isso
$query = Transaction::with(['customer', 'merchant', 'batch'])
->select(sprintf('%s.*', (new Transaction)->table));
Preciso filtrar a transação com base no iso_id que pertence ao usuário atual logado.
$query = Transaction::with(['customer', 'merchant', 'batch'])
->select(sprintf('%s.*', (new Transaction)->table))
->where('merchant.iso_id', '=', auth()->user()->isIso());
O iso_id com o qual preciso comparar está dentro da tabela do comerciante
auth()->user()->isIso() retorna o iso_id correto se verdadeiro ou envia falso se não
Então, minha primeira tentativa foi usar where('merchant.iso_id', '=', auth()->user()->isIso())
Mas isso retorna que a coluna não existe porque, por algum motivo, não está mudando do modelo de transação para o do comerciante.
Não tenho certeza de como usar as coisas dentro de with() como um seletor para o meu where()
Qualquer ajuda seria apreciada!
Respostas
1 DigitalDrifter Aug 26 2020 at 00:38
Tente usar whereHaspara adicionar a restrição:
$query = Transaction::with(['customer', 'batch'])
->whereHas('merchant', function ($q) {
$q->where('iso_id', auth()->user()->isIso());
})
->select(sprintf('%s.*', (new Transaction)->table))
->get();
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino