vista - Laravel 4: une la tabla pero solo la última fila
foreach laravel controller (2)
Puede usar la función MAX
procesar. Suponiendo que su fecha se almacena Responses.date
, el código se verá así
$quotes = Quote::select(''Quotes.*'', DB::raw(''COUNT(Responses.id) as total_responses''), DB::raw(''MAX(CAST(Responses.date AS CHAR)) as latest'') )
->leftjoin(''Responses'', function($join) {
$join->on(''Responses.quote_id'', ''='', ''Quotes.id'')
->where(''Responses.state'', ''!='', ''0'');
})
->groupby(''Quotes.id'');
Primero tiene que ser lanzado como un char debido a un error mysql https://bugs.mysql.com/bug.php?id=54784
Tengo 2 tablas: citas, respuestas.
En una tabla de datos, muestro comillas, y para cada fila, muestro un conteo de respuestas en la columna. Ahora quiero mostrar la fecha de la última respuesta, pero estoy bloqueado :(
Aquí está mi código:
$quotes = Quote::select(''Quotes.*'', DB::raw(''COUNT(Responses.id) as total_responses'') )
->leftjoin(''Responses'', function($join)
{
$join->on(''Responses.quote_id'', ''='', ''Quotes.id'')
->where(''Responses.state'', ''!='', ''0'');
})
->groupby(''Quotes.id'');
¿Es posible agregar otra combinación a la izquierda con la misma tabla, con consulta personalizada para seleccionar solo la última fila?
Gracias por ayudar
Lo que necesita es incluir Responses.created_at
en su comando de selección y filtrarlo usando la misma columna. es decir
$quotes = Quote::select(''Quotes.*'', ''Responses.created_at as last_response_date'', DB::raw(''COUNT(Responses.id) as total_responses''))
->leftjoin(''Responses'', function($join)
{
$join->on(''Responses.quote_id'', ''='', ''Quotes.id'')
->where(''Responses.state'', ''!='', ''0'');
})
->groupby(''Quotes.id'')->orderBy(''Responses.created_at'', ''desc'');