Как установить таблицу / коллекцию Laravel Model динамически? - PullRequest
0 голосов
/ 06 сентября 2018

Я использую GitHub - jenssegers / laravel-mongodb: модель Eloquent на основе MongoDB и построитель запросов для Laravel; В моем проекте Laravel я создал модель БД, которая задает имя таблицы модели динамически (в коллекции случаев 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 голосов
/ 06 сентября 2018

Возможно, вы могли бы сделать что-то подобное в своем классе.

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'), и имя коллекции будет установлено только для этого конкретного экземпляра.

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