2016-03-29 8 views
3

私のゲストにデータベースに4つのレコードがあります。特定のwhere句から最高のIDを取得

enter image description here

私はnote_display = 1を持ち、最高のIDを持っているゲストに照会しようとしています。私は

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

を試してみた


私は今立ち往生lilのだ

Trying to get property of non-object 

を持って、任意のヒントが巨大になることができますか?

+1

おそらく、私は正しくそれについて考えていないんだけど、考えていない、 'ユーザーレビュー::どこ( 'note_display'、1) - )(第一> - > [並べ替え( 'ID'、 'DESC');'あなたを与えますあなたが必要なもの? – camelCase

+1

@camelCaseそれは私が質問を読むときに私が思ったものです。なぜOPがクエリービルダーが簡単に何かのために生のステートメントを使用しているのか分かりません。 –

+1

皆さんは大丈夫です。私はこれを実際よりも難しくしました。私は完全に 'orderBy( '​​id'、 'desc')' – ihue

答えて

3

このクエリではrawを使用する必要はありません。あなたは

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

のような単純なクエリを実行することができ、それが最高のIDと= 1note_displayを持つユーザーレビューを返します。

1

生のSQL文字列はWHERE id={the maximum id present in the table}

1

それはIDの最大値を選択し、それはあなたがサブクエリ内note_display = 1持つ行のみを取得しているに見えますSELECT * FROM guests WHERE note_display = 1 ORDER BY id DESC LIMIT 1のようなものであるべきところnote_displayは= 0、そうしようとすることです非オブジェクトエラーが発生しました。

あなたはrawで行くことに主張している場合は、これを試してみてください!

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

私のDB:rawをまだ維持していますが、まだ解決策が出ています。 :) – ihue

+0

@hue嬉しい解決策を得て、私の友人 – m2j

関連する問題