2017-06-10 13 views
0
DB::table('amounts')->findOrFail($id); 

リターンfindOrFail()未定義のメソッドを照らしデータベースクエリビルダーへのクエリービルダー

コール:: findOrFail()

に私はしたくありませんここでモデルを使用してください。

これを達成する最もよい方法は何ですか? (idがテーブルにないとき、私はちょうど404を返すようにしたい。)


私はその間に:

$amount = DB::table('amounts')->find($request->input('amount')); 
if(!$amount) abort(404); 
+1

モデルを使用しない場合、2番目の変種は正常です。 –

+0

findOrFailが実装されていない理由があるかどうか知っていますか? – Neabfi

+1

私は、クエリービルダーはSQL言語用のラッパーだからだと思います。 Eloquentモデルは、クエリビルダといくつかのロジックの組み合わせです。 –

答えて

1

https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Builder.html#method_findOrFail

find($id)

https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Builder.html#method_find

データベースビルダ方法ですが、findOrFail($id)はそうあなたが直接そのようにそれを使用することはできませんではありません。

私はあなたがなぜ使用したくないのかを実際には知りませんでしたEloquent Modelしかし、その間にやっていることをやり遂げる良い方法です。

0

あなたがその意志のモデルを使用しない場合仕事をしなさい。あなたがモデルを使用している場合、あなたが点灯し、\データベース\ trycatch

をすることができます\雄弁\ ModelNotFoundException

その時点で404を中止します。

0

あなたは終了テーブルへのかどうレコードを取得するコードの下で試すことができます。

$result = DB::table('amounts')->find($id); 

if($result == NULL) //check if no record found 
{ 
     //do your stuff here 
} 
else //if record found from table 
{ 
     //do your stuff here 
} 

・ホープ、このことができます。あなたはこのAPIドキュメントで見ることができるように

関連する問題