更新用户配置文件记录时从空值创建默认对象

时间:2019-06-30 09:24:46

标签: php laravel laravel-5 laravel-5.1

我想更新用户配置文件记录,但是在提交时,弹出一条错误消息“从空值创建默认对象”,当我删除if语句并仅键入var_dump($ data)时,它是运行顺畅,并显示所有数据,但是如果使用if命令,则会弹出错误消息。我不知道为什么会这样,请提供任何帮助,

class home extends Model
{

    protected $table="homes";
    public static function upstore($data){
    $firstname=Input::get('fname');
    $lastname=Input::get('lname');
    $phone=Input::get('phone');
    $address=Input::get('address');
    $profileimage=Input::get('pimage');
    $password=Input::get('pswrd');
    $confirmpassword=Input::get('cpswrd');

      if( $firstname != '' ){
        $homes->fname    = $firstname;
      }
     if( $lastname != '' ){
        $homes->lname    = $lastname;
      }
     if( $phone != '' ){
        $homes->phone    = $phone;
      }
     if( $address != '' ){
        $homes->address    = $address;
      }
     if( $profileimage != '' ){
        $homes->pimage    = $profileimage;
      }
     if( $password != '' ){
        $homes->pswrd    = $password;
      }
     if( $confirmpassword != '' ){
        $homes->cpswrd    = $confirmpassword;
      }

         $homes->save();
     }
  }

它显示此错误

  

从空值创建默认对象

2 个答案:

答案 0 :(得分:1)

在第一个if语句之后,您尝试将属性设置为值,但从未将$homes初始化为任何对象。

因此在if语句上方:

$homes = new home;

答案 1 :(得分:1)

如我所见,您的模型中有@upstore方法。我可以在这里看到一些问题:

  • 您到底要使用控制器什么?仅用于显示视图?控制器是将输入请求转换为输出请求的应用程序的一部分,因此请将此逻辑切换到控制器中,因为如果您自己保留此约定,则在工作时很容易遇到麻烦。

  • if($ user,$ address ..)-为什么不使用Laravel Validator? =)

  • use GuzzleHttp\Client; $client = new Client(); $response = $client->post('url', [ 'json' => ['foo' => 'bar'] ]); 的正确方法是:(Request :: has('field')

不要以为我要看起来更聪明才这么说,但是这些错误会使您在团队中工作时立即被拒绝。

返回答案。我相信,如果您修复所有这些问题,那么代码应该可以正常工作。