如何动态设置Laravel模型表/集合?

时间:2018-09-06 06:17:05

标签: php mongodb laravel model

我正在使用GitHub-jenssegers / laravel-mongodb:一个基于MongoDB的雄辩的Laravel模型和查询构建器; 在我的Laravel项目中,我创建了DB模型,该模型动态设置Model表名(在Mongodb案例集合中)。

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class DbData extends Model
    {   
        protected   $collection = 'default_collection';
        function __construct($collection)
            {
                $this->collection = $collection;
            }
    }

当我创建新的DbData对象以进行数据插入时,此方法有效:

$data = new DbData('dynamic_collection_name');
$data->variable = 'Test';
$data->save();

但是这种解决方案还不够,我想使用DbData模型从数据库查询数据。     我想要实现的是增加为DbModel传递变量的可能性,例如:

$data = DbData::setCollection('dynamic_collection_name');
$data->get();

1 个答案:

答案 0 :(得分:0)

您也许可以在课堂上做类似的事情。

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class DbData extends Model
{   
    protected   $collection = 'default_collection';

    public function __construct($collection)
    {
        $this->collection = $collection;
    }

    public static function setCollection($collection)
    {
        return new self($collection);
    }
}

这将允许您调用DbData::setCollection('collection_name'),并且仅为该特定实例设置集合名称。