Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将属性传递回父类构造函数方法_Php_Laravel_Eloquent - Fatal编程技术网

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

Php 如何将属性传递回父类构造函数方法,php,laravel,eloquent,Php,Laravel,Eloquent,如何将变量从子类传递到父构造函数类的方法中?我能够用这个构造函数创建一个资产,没有任何问题 我有一种感觉,这与eloquent处理受保护视频的方式有关。在抛出错误之前,所有这三个变量都会进入各自的方法 //Parent Class class Asset extends Model { protected $fillable = [ 'type', 'title','origin', ]; // protected $author_id; /

如何将变量从子类传递到父构造函数类的方法中?我能够用这个构造函数创建一个资产,没有任何问题

我有一种感觉,这与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]:未找到列:字段列表中的1054未知列'type'(SQL:插入'recipes'('type`、'updated_at`、'created_at`)值(recipe,2019-07-11 19:35:232019-07-11 19:35:23))


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

//子类
类配方扩展了资产
{
受保护的$table='资产';
}
然而,我强烈建议您检查您所做的是否是反模式。在不了解更多信息的情况下,从长远来看,您可能希望在资产表上创建多态关系,并使用其他表的外键


<>我强烈考虑不执行上面的代码来解决您的问题。使用此选项很可能会继续带来麻烦。

我确认此列实际上在数据库中。我刚刚添加了一个DB字段的屏幕截图,它肯定在其中,这是
资产的模式。
此查询正试图插入一个名为
recipes
啊的表中。它是否应该将父类数据保存在其各自的表中?@Alex您不需要在子类中使用_构造,但是您的评论非常正确。扩展的模型类是独立的。ORM可以处理数据库方案所能提供的每一种相互关系。多态性是额外的奖励。