【问题标题】:Creating default object from empty value (adding an item to a database for a new user in Laravel)从空值创建默认对象(在 Laravel 中为新用户添加项目到数据库)
【发布时间】:2014-04-09 22:39:51
【问题描述】:

我有一个用来添加的函数

我有一个数组 $data ,其中包含我试图放入数据库的用户数据。除了“makeUrlTag”功能部分外,一切正常:

public function makeUrlTag() {

        $url_tag = '';
        if(isset($this->data['user']['first_name'])) {
        $url_tag = $url_tag . $this->data['user']['first_name'];
        }
        if(isset($this->data['user']['last_name'])) {
        $url_tag = $url_tag.$this->data['user']['last_name'];
        }

        $fan->url_tag = $url_tag;

    }

public function createFan() {
        $fan                        = new Fan;
        $fan->fbid                  = isset($this->data['user']['id']) ? $this->data['user']['id'] : '';
        $fan->email                 = isset($this->data['user']['email']) ? $this->data['user']['email'] : '';
        $fan->first_name            = isset($this->data['user']['first_name']) ? $this->data['user']['first_name'] : '';
        $fan->last_name             = isset($this->data['user']['last_name']) ? $this->data['user']['last_name'] : '';


        $this->makeUrlTag();

        $fan->save();
    }

我调用 createFan:

$this->createFan();

当我运行它时,我得到了错误:

Creating default object from empty value

参考 makeUrlTag();部分。特别是这行:

$fan->url_tag = $url_tag;

知道这里发生了什么吗?同样,取出 makeUrlTag 部分工作正常。谢谢你。

【问题讨论】:

    标签: php database laravel laravel-4


    【解决方案1】:

    这是因为您的makeUrlTag() 方法不知道您在$fan 变量中创建的Fan 变量createFan() 并试图使用@987654325 范围内不存在的对象@方法使用这个:

    $fan->url_tag = $url_tag;
    

    因此,您需要使您的$fan 对象可用于makeUrlTag(),为此您可以在您的类中添加一个protected 属性:

    class YourClass {
    
        protected $fan = null;
    
        public function makeUrlTag(){
    
            $url_tag = '';
    
            // ...
    
            $this->fan->url_tag = $url_tag;
    
        }
    
        public function makeUrlTag(){
    
            $this->fan = new Fan;
    
            // rest of your code
            // but use $this->fan instead of $fan
    
            $this->fan->save();
    
        }
    
    }
    

    所以,现在您可以使用 $this->fan 从类的任何方法中访问 $fan 对象,就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 2018-07-18
      • 2019-03-14
      • 1970-01-01
      • 2020-06-19
      • 2021-05-22
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多