Php 如何将属性传递回父类构造函数方法
如何将变量从子类传递到父构造函数类的方法中?我能够用这个构造函数创建一个资产,没有任何问题 我有一种感觉,这与eloquent处理受保护视频的方式有关。在抛出错误之前,所有这三个变量都会进入各自的方法Php 如何将属性传递回父类构造函数方法,php,laravel,eloquent,Php,Laravel,Eloquent,如何将变量从子类传递到父构造函数类的方法中?我能够用这个构造函数创建一个资产,没有任何问题 我有一种感觉,这与eloquent处理受保护视频的方式有关。在抛出错误之前,所有这三个变量都会进入各自的方法 //Parent Class class Asset extends Model { protected $fillable = [ 'type', 'title','origin', ]; // protected $author_id; /
//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可以处理数据库方案所能提供的每一种相互关系。多态性是额外的奖励。