如何将属性传递回父类构造函数方法

时间:2019-07-11 19:45:07

标签: php laravel eloquent

如何将子类中的变量传递到父构造器类的方法中?我可以使用此构造函数创建资产,而不会出现任何问题。

我觉得这与雄辩地处理受保护视频的方式有关。在引发错误之前,所有这三个变量都将使用各自的方法。


//Parent Class
class Asset extends Model
{
    protected $fillable = [
        'type', 'title','origin',
    ];


    // protected $author_id;
    // protected $keywords = [];
    // protected $proof_status;
    // protected $description;
    // protected $usageHistory;

    public function __construct($type, $title, $origin)
    {
        $this->setType($type);
        $this->setTitle($title);
        $this->setOrigin($origin);
    }

    // Setters
    public function setType($type){
        $this->type = $type;
    }

    public function setTitle($title)
    {
        $this->title = $title;
    }

    public function setOrigin($origin)
    {
        $this->origin = $origin;
    }

    public function setAltTitle($alt_title)
    {
        $this->alt_title = $alt_title;
    }

    public function setDescription($description)
    {
        $this->description = $description;
    }
}

// Child Class
class Recipe extends Asset
{
    public function __construct($type, $title, $origin){
        parent::__construct($type, $title, $origin);

    }
}

我希望这会设置$ type,$ origin和$ title,但这是我收到的错误 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'type' in 'field list' (SQL: insert into `recipes` (`type`, `updated_at`, `created_at`) values (recipe, 2019-07-11 19:35:23, 2019-07-11 19:35:23))

Asset:DB

1 个答案:

答案 0 :(得分:2)

您可以通过添加以下内容来解决此问题:

// Child Class
class Recipe extends Asset
{
    protected $table = 'assets';
}

但是,我强烈建议您检查您正在执行的操作是否是反模式。长期以来,您似乎不知道更多信息,这似乎是要使用其他表的外键在资产表上创建多态关系。

我将强烈考虑不实施上述代码来解决您的问题。使用此方法很可能会继续导致头痛。