2014-10-13 23 views
7

Laravel Administrator paketini donmuşnode kullanıyorum. Uzun lafın kısası, yumuşak silinen sonuçları görüntülerken sorunlara koşuyorum. Varsayılan sorgu geçersiz kılmak çalışıyorum:Laravel Eloquent VEYA NULLER NULL DEĞİL

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

hem silinmiş sonuçlarını görüntülemek ve bir şekilde uzakta hack, silinmemiş belirleyin. Bu en şık çözüm değil ama bunu yapmak için başka bir yol göremiyorum. Yani, amacım bu yapmaktır:

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

Ne yazık ki birlikte orWhere() nasıl kullanılacağını bilmiyorum 'boş değil'. Biraz araştırma yaptıktan sonra, ben böyle bir ham SQL bloğu ile denedim:

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

Ama orWhere ikinci parametre() kapsamayan elde edilen SQL fazladan bir parça ile sona erdi:

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

Bunu nasıl düzeltebilirim?

cevap

15

Sadece withTrashed ekleyin:

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

Ne yazık ki bu işe yaramıyor. Ben tanımlanmamış bir yöntem çağrısı \ Veritabanı \ Query \ Builder :: withTrashed() hatası çağrısı alıyorum. – Anonymous

0

y ise:

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

Source

Güncelleme

Bu durumda, muhtemelen sadece orWhereNotNull() görüşmesi ekleyebilir silindi kayıt (Yumuşak Silinen Kayıt) aramak istiyorsanız, Eloquent Model Query'yi kullanmayın.
yerine kullanmak Db::table query
örneğin
yerine Aşağıda kullanmanın:

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

kullanın

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

-2

Bu alakalı olabilir:

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

(from GitHub).

+1

Lütfen cevabınızı açıklayın, neden işe yarar? –