2016-03-29 17 views
3

Benim misafirler veritabanında 4 kayıtları var.Belirli bir yerden en yüksek sayıda kimlik alın

enter image description here

Ben note_display = 1 sahiptir ve en yüksek kimliğe sahip misafire sorgulamak için çalışıyorum.


herhangi ipuçları büyük bir yardımcı olmak, ben lil şimdi sıkışmış değilim
Trying to get property of non-object 

var

$last_note = DB::table('guests')->where('note_display','=',1)->where('id', DB::raw("(select max(`id`) from guests)"))->first(); 

olacak denedim?

+1

Belki de doğru olarak düşünmüyorum, ama yapamazsın Konuk :: nerede ('note_display', 1) -> orderBy ('id', 'desc') -> first(); 'size verir neye ihtiyacın var? – camelCase

+1

@camelCase bu soruyu okurken düşündüğüm şey. OP'nin neden sorgu oluşturucunun bu kadar kolay bir şekilde yaptığı bir şey için ham ifadeler kullandığını bilmiyorum. –

+1

Siz çocuklar tamamen haklısınız. Bunu gerçekte olduğundan daha zor yaptım. Ben orderBy ('id', 'desc') ' – ihue

cevap

3

bu sorguda raw kullanmaya gerek yoktur. Sen

Guest::where('note_display', 1)->orderBy('id', 'desc')->first(); 

gibi basit bir sorgu çalıştırabilir Ve en yüksek ID ve = 1note_display sahip Misafir dönecektir.

1

ham sql dizesi WHERE id={the maximum id present in the table}

1

O id maksimum seçmek o Bir alt sorgusu içinde note_display = 1 ile satırları alıyorsanız görünüyor SELECT * FROM guests WHERE note_display = 1 ORDER BY id DESC LIMIT 1 gibi bir şey olması gereken yerde note_display = 0, bu nedenle deneyin etmektir nesne olmayan hata oluştu.

raw ile gitmekte ısrar ediyorsanız bunu deneyin!

$last_note = DB::table('guests')->where('id', DB::raw("(select max(`id`) from guests where note_display = '1')"))->first(); 
+0

Ayrıca biri DB'mi hala korumak için: ham, ve hala çözümle gel. :) – ihue

+0

@ihue, çözümü aldım dostum arkadaşım – m2j

İlgili konular