Как передать атрибуты обратно в методы конструктора родительского класса - PullRequest
1 голос
/ 11 июля 2019

Как я могу передать переменные из дочернего класса в методы родительского класса конструкторов?Я могу создать актив с этим конструктором без каких-либо проблем.

У меня такое ощущение, что это как-то связано с тем, как красноречиво обрабатывает защищенные видео.Все три переменные передают ошибку соответствующим методам.


//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))

Актив: DB

1 Ответ

2 голосов
/ 11 июля 2019

Вы можете решить эту проблему, добавив следующее, я верю:

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

Однако , я очень рекомендую проверить, является ли то, что вы делаете, анти-паттерном. Не зная больше информации, кажется, что в долгосрочной перспективе вы захотите создать полиморфные отношения в таблице ресурсов с внешними ключами к другим таблицам.

Я бы настоятельно рекомендовал не применять приведенный выше код для решения вашей проблемы. Использование этого, скорее всего, будет продолжать вызывать головные боли в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...