我想更新用户配置文件记录,但是在提交时,弹出一条错误消息“从空值创建默认对象”,当我删除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();
}
}
它显示此错误
从空值创建默认对象
答案 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')
不要以为我要看起来更聪明才这么说,但是这些错误会使您在团队中工作时立即被拒绝。
返回答案。我相信,如果您修复所有这些问题,那么代码应该可以正常工作。