2017-01-09 3 views
1

laravel apiでは最初の戻り値が関数を壊し、関数の残りの部分を実行し続けることはできませんか?laravel apiの1つの関数内で2つの戻り値

私はこれを行うとき、私は何のデータを取得していない

public function get(Request $request) 
{ 
    $users = User::doesntHave('reservations')->get(); 
    if ($users) { 
     return Response::json($users); 
} 
    // do something here if no users attached with reservation and do 
    // return Response::json($users); 
} 

この機能を持っています!私の間違いは何ですか?私はあなたが何をしたいと思い

答えて

1

は、結果が空であるかどうかをチェックすることです:

if (!$users->isEmpty()) { 
    return Response::json($users); 
} 

return Response::json('There is no result'); 

そして、はい、あなたは一度だけ応答を返すことができます。

+0

ありがとうございました!だからもし私が 'if($ users-> isEmpty()){ リターンレスポンス() - > json($ users); } '同じことですが、データがあるかどうかを確認するにはどうすればいいですか?そうでない場合は、別のコードを実行しますか? – leo0019

+0

'if(!$ users-> isEmpty())'でなければなりません。私の答えのコードを見てください。 resultが空でない場合は、それを返します。空の場合は、直列化された文字列を返します。 –

+0

Alexeyは元の質問をもう一度読んで、私は彼が両方のケースで 'Response :: json($ users);'を望んでいると思います。だから、おそらくちょうど底に戻り、 '$ users-> isEmpty'が「何か」 – sidyll

1

これはLaravelに排他的ではありません。 returnステートメントper definitionは、関数の呼び出し元にすぐに戻ります。したがって、実行後には何も実行されません。

関数内から呼び出された場合、return文は現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。 returnはeval()文またはスクリプトファイルの実行も終了します。

+0

私のサインアップ関数にはどうしたらいいのですか?(if $ user-> id){ return $ this-> response-> error( 'could_not_create_user'、500); } if($ hasToReleaseToken){ return $ this-> login($ request); } 'それは働いています – leo0019

+0

私はあなたが何をするように指示しただけなので、「働いています」という意味がわかりません!最初の条件が実行されると、2番目の条件は実行されません。または、2番目が実行された場合、最初は実行されませんでした – sidyll

+0

しかし、私は最初の条件が実行されているかどうかを確認しようとすると、2番目の条件に移動します。最初のものをチェックして残りのものをスキップします – leo0019

関連する問題