如何将子类中的变量传递到父构造器类的方法中?我可以使用此构造函数创建资产,而不会出现任何问题。
我觉得这与雄辩地处理受保护视频的方式有关。在引发错误之前,所有这三个变量都将使用各自的方法。
//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))
答案 0 :(得分:2)
您可以通过添加以下内容来解决此问题:
// Child Class
class Recipe extends Asset
{
protected $table = 'assets';
}
但是,我强烈建议您检查您正在执行的操作是否是反模式。长期以来,您似乎不知道更多信息,这似乎是要使用其他表的外键在资产表上创建多态关系。
我将强烈考虑不实施上述代码来解决您的问题。使用此方法很可能会继续导致头痛。