Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter resultados da consulta se a data selecionada estiver entre duas datas?

User::whereHas('availabilities', function ($q) use ($dt) {
    $q->where('unavailable_start_date', '<=', $dt)
      ->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();

Então, de certa forma, estamos invertendo isso. Estamos configurando a consulta dentro de whereHas para encontrar as disponibilidades, indisponibilidades, que estão nesse intervalo. Portanto, estamos consultando todos os registros indisponíveis (de certa forma). Estamos, então, apenas pegando usuários que não têm relacionamentos que correspondam a esse critério, usando os outros argumentos para whereHas ( '=', 0 ).

Portanto, quaisquer usuários que tenham essa relação que se enquadrem nesse intervalo de tempo não serão retornados, não importa quantos registros de disponibilidade tenham. Se algum deles se qualificar, não passará pelo filtro.