Laravel 5.3检查结果是否存在

时间:2016-09-25 16:42:12

标签: php laravel-5

我无法让这件事情发挥作用。基本上,一旦我单击用户配置的删除按钮,就会调用此函数。用户可以有多个配置。会发生的是,一旦我删除了一个配置,它就会查找另一个配置,如果找到则将其设置为当前配置文件。如果没有,它应该将config_done设置回0.第一位工作正常,但如果$firstProfile没有返回任何内容,而不是输入else,则返回错误..

代码:

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环境都很陌生。

1 个答案:

答案 0 :(得分:2)

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

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

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

$firstProfile变量可以是UserConfig的实例,也可以是null,无需检查计数。