Laravel HasManyThrough CrossDatabaseRelation - PullRequest
0 голосов
/ 03 марта 2020

странный вопрос: у меня есть 3 модели

  1. Заказ

    с идентификатором PK

  2. Строка заказа

    с id в качестве PK и order_id в качестве FK. Марка и номер изделия - это два отдельных столбца

  3. Артикул
    с объединенным брендом PK и номером изделия **, который находится в другой базе данных **

Один заказ имеет много строк заказа. Каждый ордер имеет одну статью. я сделал функцию в порядке:

public function articles()
    {
        $foreignKeys = [
            'brand_id',
            'article_number',
        ];
        $localKeys = [
            'brand',
            'partnumber',
        ];
        return $this->hasManyThrough('App\Models\Masterdata\Articles','App\Models\Oms\OrderLine',$foreignKeys,$localKeys,'id','id');
    }

Как я могу получить все атрибуты из статей через заказ? Я попробовал что-то вроде этого:

    $order = Order::find($orderid)->articles();
    dd($order);
    //did not work
    $order = Order::with('orderlines.articles')->where('id','=',$orderid)->get();

У вас есть идея для меня?

1 Ответ

0 голосов
/ 03 марта 2020

Вы можете настроить более одной базы данных в конфигурации database.php и указать имя $connection в классе Model.

В большинстве случаев Eloquent не выполняет JOINs, он просто выполняет Операторы IN на значениях ключей из предыдущего запроса и программно объединяют результаты после факта. Частично, чтобы избежать путаницы в сохранении уникальности псевдонимов таблиц, а частично для того, чтобы предложить такую ​​поддержку, чтобы ваши отношения не нуждались в одной базе данных.

Другими словами, то, что у вас там должно работать просто хорошо. Если есть конкретная ошибка c, которая возвращается обратно, добавьте ее в свой пост.

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