Voglio interrogare il mio modello Laravel usando eloquente per i risultati che potrebbero dover corrispondere ad alcune clausole where, quindi i numeri predefiniti take
e skip
.Ottieni il numero di righe in Eloquent di Laravel prima di utilizzare "take" e "salta"
Questo non è un problema in sé, ma devo anche conoscere il numero di righe che sono state trovate nella query prima di ridurre il set di risultati con take e skip, quindi il numero originale di corrispondenze che potrebbe essere ogni riga nella tabella se non vengono utilizzate clausole o alcune se viene utilizzata una delle due.
Quello che voglio fare potrebbe essere compiuto effettuando la query due volte, con la prima omissione di "->take($iDisplayLength)->skip($iDisplayStart)
" alla fine e il conteggio, ma ciò sembra solo disordinato.
Qualche idea?
$contacts = Contact::where(function($query) use ($request)
{
if (!empty($request['firstname'])) {
$query->where(function($query) use ($request)
{
$query->where('firstname', 'LIKE', "%{$request['firstname']}%");
});
}
if (!empty($request['lastname'])) {
$query->where(function($query) use ($request)
{
$query->where('lastname', 'LIKE', "%{$request['lastname']}%");
});
}
})
->take($iDisplayLength)->skip($iDisplayStart)->get();
$iTotalRecords = count($contacts);
Proprio chiama 'count' e' take() -> skip() -> get() ', che c'è di disordinato? –
Come vuoi dire scusa? Sicuramente dovrei ripetere l'intero - $ contacts = Contact :: where (funzione ($ query) usare ($ request) .... - parte ogni volta? –
No, non lo è. Controlla la mia risposta –