在Laravel中,将模型实例与其自己的类相关联的好方法是什么?

时间:2018-08-23 09:39:02

标签: php laravel laravel-5.6

我敢肯定这种事情有一个共同的模式,我正努力寻找搜索词来寻找答案,所以请耐心等待。

我的应用程序中有一些类可以创建存储在关系数据库中的标准模型,例如;

// AtsType::name examples = 'XML', 'RSS', 'SOAP'

class AtsType extends Model
{
    public function ats_instances()
    {
        return $this->hasMany('App\AtsInstance');
    }

    public function import()
    {

    }
}

但是,我需要该import()方法要做的事情,基于实际的模型实例以某种方式调用了类/接口/合同/任何东西。像这样;

AtsTypeRss::import() AtsTypeXml::import() AtsTypeSoap::import()

我希望它们是独立的类,以便最终使用一些工匠命令为开发人员生成它们,并进行数据迁移以将新的模型名称创建到数据库中。

我只是不确定该怎么做。

1 个答案:

答案 0 :(得分:2)

您可以尝试类似的方法(如here所示),我已经搜索了如何在命名空间中使用变量:

class AtsType extends Model
{
    protected $import_method = 'MyMethod';

    public function ats_instances()
    {
        return $this->hasMany('App\AtsInstance');
    }

    public function import()
    {
        $string = $this->import_method;
        $class = '\\controller\\' . $string;
        $newObject = new $class();
    }
}