2014-10-13 21 views
7

Sto usando il pacchetto Laravel Administrator da frozennode. Per farla breve, sto riscontrando problemi durante la visualizzazione dei risultati che sono stati eliminati. Sto cercando di ignorare la query predefinita:Laravel Eloquent O DOVE NON È NULL

select * from `scripts` where `scripts`.`deleted_at` is null group by `scripts`.`id` 

per visualizzare sia i risultati cancellati e non cancellato, in qualche modo hacking. Non è la soluzione più elegante ma non vedo nessun altro modo per farlo. Quindi, il mio obiettivo è quello di fare questo:

select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null group by `scripts`.`id` 

Purtroppo non so come utilizzare orWhere() con 'non è nullo'. Dopo la ricerca di un po ', ho provato con un blocco di SQL prime, in questo modo:

'query_filter'=> function($query) { 
    $query->orWhere(DB::raw('`scripts`.`deleted_at` is not null')); 
}, 

Ma ho finito con un ulteriore pezzo di SQL risultante di non includere il secondo parametro in orWhere():

select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null **is null** group by `scripts`.`id` 

Come posso risolvere questo problema?

risposta

15

Basta aggiungere withTrashed:

'query_filter'=> function($query) { 
    $query->withTrashed(); 
}, 

Source

Aggiornamento

In questo caso, probabilmente si può solo aggiungere una orWhereNotNull() chiamata:

'query_filter'=> function($query) { 
    $query->orWhereNotNull('deleted_at'); 
}, 
+1

Sfortunatamente non funziona. Ricevo un richiamo a un metodo non definito Errore \ Database \ Query \ Builder :: withTrashed(). – Anonymous

0

Se y si desidera cercare il record eliminato (Soft Deleted Record), non l'utente Eloquent Model Query.
utilizzare Invece Db::table query
es
Invece di usare Sotto:

$stu = Student::where('rollNum', '=', $rollNum . '-' . $nursery)->first();

Usa

$stu = DB::table('students')->where('rollNum', '=', $newRollNo)->first();

-2

Questo potrebbe essere rilevante:

return $this->join($table, $first, $operator, $second, 'right'); 

(da GitHub).

+1

Si prega di descrivere la risposta, perché funziona? –