Можно ли определить отношения в моделях Eloquent, если таблицы находятся в разных базах данных? - PullRequest
0 голосов
/ 24 октября 2019

Есть две таблицы, которые находятся в разных базах данных. Допустим, один из них - Пользователи, а другой - Автомобили. В автомобилях есть столбец user_id. Можно ли создать модели для этих двух таблиц (Car и User), чтобы я мог загружать отношения при запросе пользователей? Как это:

User::find(3)->with('cars')->get();

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Вы можете сделать это для баз данных, которые поддерживают это как сервер Microsoft SQL в качестве драйвера. Все, что вам нужно сделать, чтобы сделать эту работу, это добавить несколько соединений (баз данных) в вашей конфигурации и ссылаться на них в вашей модели:

protected $connection = 'database2';
0 голосов
/ 24 октября 2019

На самом деле я попробовал это, и оказалось, что Laravel хорошо работает в такой ситуации. Все, что вам нужно, это указать связи в ваших моделях и определить отношения как обычно. Дело в том, что laravel не создает один большой запрос, когда вы используете Model :: with ('отношение'). Сначала он запрашивает корневую модель, затем дочернюю модель, а затем сопоставляет их прямо в коде. хотя я нахожу это странным, поскольку это должно снизить производительность, поскольку у нас есть два запроса вместо одного, а затем он обрабатывает результат, хотя он хорошо работает с межбазы данных.

0 голосов
/ 24 октября 2019

Это невозможно по короткому пути. Вы можете сделать это, настроив различные соединения, но это не соответствует политикам реляционных баз данных.

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