РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
174 of 1392 menu

Атрибут connection

Атрибут connection в модели Eloquent позволяет явно задать подключение к базе данных, которое будет использоваться для всех операций с этой моделью. Если атрибут не указан, модель использует подключение по умолчанию из конфигурации. Первым параметром передаётся имя подключения из файла config/database.php.

Синтаксис

<?php class Article extends Model { protected $connection = 'mysql'; } ?>

Пример

Давайте укажем для модели Article подключение к базе данных 'pgsql':

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $connection = 'pgsql'; } ?>

Теперь все запросы к модели Article будут выполняться через подключение PostgreSQL:

<?php use AppModelsArticle; $articles = Article::all(); foreach ($articles as $article) { echo $article->title; } ?>

Пример

Давайте создадим модель User с динамическим определением подключения через конструктор:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class User extends Model { public function __construct(array $attributes = [], $connection = null) { parent::__construct($attributes); if ($connection !== null) { $this->connection = $connection; } } } ?>

Теперь можно создавать экземпляры модели с разными подключениями:

<?php use AppModelsUser; $users_mysql = new User([], 'mysql'); $users_pgsql = new User([], 'pgsql'); $res = $users_mysql->all(); echo count($res); ?>

Результат выполнения кода:

"10"

Пример

Давайте используем атрибут connection вместе с методом on для временного изменения подключения:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $connection = 'mysql'; } ?>

В контроллере можно переопределить подключение на лету:

<?php use AppModelsArticle; $articles_mysql = Article::all(); $articles_pgsql = Article::on('pgsql')->get(); echo 'MySQL: ' . count($articles_mysql); echo 'PostgreSQL: ' . count($articles_pgsql); ?>

Результат выполнения кода:

"MySQL: 15" "PostgreSQL: 8"

Смотрите также

  • атрибут table,
    который задаёт имя таблицы для модели
  • атрибут primaryKey,
    который определяет первичный ключ модели
  • атрибут timestamps,
    который управляет автоматическими метками времени
  • метод connection,
    который получает подключение к базе данных через фасад DB
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить