Использование модели Laravel с другой базой данныхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование модели Laravel с другой базой данных

Сообщение Anonymous »

У меня следующая ситуация. Я хочу создать несколько моделей для использования в различных предварительно настроенных базах данных. В данном случае у меня есть модель под названием «Категория», которая должна работать с несколькими таблицами в базе данных Magento 2. Я хочу повторно использовать эту модель для разных баз данных. Вот упрощенная модель:

Код: Выделить всё

namespace App\Models\Magento;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
protected $attributeIds = [];

protected $table = 'catalog_category_entity';
protected $primaryKey = 'entity_id';

protected $fillable = ['entity_id', 'store_id', 'website_id'];
}
Если я установлю свойство $connection для желаемой базы данных, я смогу использовать метод ->all() и получить замечательную коллекцию записей. Но, как уже упоминалось, для использования его в разных базах данных все лучшие практики показывают два варианта: статический и нестатический. Оба варианта у меня не работают.
Статический способ (->on('MY_CONNECTION')) приводит к тому, что по-прежнему используется соединение по умолчанию, а не мое соединение. Если я использую нестатический способ (->setConnection('MY_CONNECTION')) он также переходит к соединению по умолчанию. Если я выполняю dd() для модели прямо перед ->all(), появляется сообщение $connection = 'MY_CONNECTION'. Но как только я его запускаю, оно снова становится соединением по умолчанию.

Код: Выделить всё

    $categoryAggegator = new MagentoCategory;
$categoryAggegator->setConnection('MY_CONNECTION');

//dd($categoryAggegator); // Here it is MY_CONNECTION

$categories = $categoryAggegator->all();

// Here it throws an exception, because the table is not present in the default connection
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/765 ... t-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»