2016-09-25 16 views
0

この問題を解決するには問題があります。基本的にこの機能は、ユーザ設定の削除ボタンをクリックすると呼び出されます。ユーザーは複数の設定を持つことができます。何が起こるかは、設定​​を削除すると別のものを探し、見つかったらそれを現在のプロファイルとして設定することです。それが0に戻ってCONFIG_DONEを設定する必要がない場合は最初のビットが正常に動作しますが、もし$firstProfile戻り、代わりにそれは私にエラーを返しelseに入るのは何も...Laravel 5.3結果が存在するかどうか確認

コード:

public function delete(UserConfig $config) { 
    $user = Auth::user(); 
    $uid = $user->id; 

    if ($uid == $config->user_id) { 

     UserConfig::where('id', $config->id)->delete(); 

     $firstProfile = UserConfig::where('user_id', $uid)->first()->id; 

     if(count($firstProfile)){ 
     $user = User::find($uid); 
     $user->current_profile = $firstProfile; 
     $user->save(); 

     return view('/settings'); 
     } else { 
     $user = User::find($uid); 
     $user->config_done = 0; 
     $user->save(); 

     return view('/home'); 
     } 
    } 
    } 

エラー:

ErrorException in UserConfigController.php line 100: 
Trying to get property of non-object 
in UserConfigController.php line 100 
at HandleExceptions->handleError('8', 'Trying to get property of non-object', '/Users/jordykoppen/git/beef-monitor/app/Http/Controllers/UserConfigController.php', '100', array('config' => object(UserConfig), 'user' => object(User), 'uid' => '1')) in UserConfigController.php line 100 

私はLaravelとMVC環境全体に非常に慣れています。

+0

Eloquentは、 'User :: find'の結果を' if'文で囲むことができる結果が見つからなければnullを返します。コレクションの場合は、http://stackoverflow.com/questions/20563166/eloquent-collection-counting-and-detect-emptyのいずれかを使用してチェックすることができます – arma

+0

'$ firstProfile'を' if'でラップしてその例を試してみました"非オブジェクトのプロパティを取得しようとしています" –

答えて

1

結果が見つからない場合、Eloquentはnullを返します。あなたはここでオブジェクトを扱っているので、カウントを調べるのではなく、これを行うだけです。

$firstProfile = UserConfig::where('user_id', $uid)->first(); 

if($firstProfile){ 
    // success 
} else { 
    // not result 
} 

$firstProfile変数はUserConfigのインスタンスになりますいずれか、またはそれはnull、回数をチェックする必要はありませんになります。

+0

ありがとう、私はこれを成功させる前にこれを試しました。それから、私は 'first()'の後に ' - > id'を出したことに気付いたので、同じことをして問題を修正しました!再度、感謝します。 –

関連する問題