2016-09-25 111 views
0

我无法正常工作。基本上这个功能是在我点击用户配置的删除按钮后调用的。用户可以有多个配置。发生什么事是,一旦我删除一个配置,它会寻找另一个配置,如果发现它将其设置为当前配置文件。如果不是应该设置CONFIG_DONE回到0的第一位工作正常,但如果$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会返回null您可以将'User :: find'结果包装在if语句中。如果它是集合,你可以检查使用任何的http://stackoverflow.com/questions/20563166/eloquent-collection-counting-and-detect-empty – arma

+0

我试图通过将'$ firstProfile'包裹在'if'语句,但它会返回一个错误:'尝试获取非对象的属性' –

回答

1

如果没有找到结果,口才将返回null。你在这里处理对象,所以你可以这样做,而不是检查计数。

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

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

$firstProfile变量要么是UserConfig实例或将是null,无需检查计数。

+0

谢谢,我之前尝试过,但没有成功。然后我注意到你在'first()'后面加了' - > id'所以我做了同样的事情并解决了问题!再次感谢。 –