Как настроить отношения загрузки во время запроса родительской модели с помощью Laravel - PullRequest
0 голосов
/ 03 мая 2018

У меня есть адресный стол и стол Kontokorrent. Мне нужно их вернуть и показать на гугл картах.

это мой контроллер:

$addresses = Address::whereHas('kontokorrent', function($query) {
            $query->ktoArt('D')->mandant(1)->aktiv();
        });

        //Conditional                
        if(!! Auth::user()->activeAddress) {
            $addresses->where('Aktiv', '<>', 0); 
        }


         $addressesFormated = $addresses->get()->map(function($item, $key) {
             return [
                  'addresse' => $item->Adresse,
                  'kto' => $item->kontokorrent->Kto,
                  'name' => $item->Name1,
                  'anschrift' => ['strasse' => $item->LieferStrasse, 'plz' => $item->LieferPLZ, 'ort' => $item->LieferOrt, 'land' => $item->LieferLand],
                  'telefon' => $item->Telefon,
                  'email' => $item->Email,
                  'coords' => ["lat" => $item->USER_CCgeoLatitude, "lng" => $item->USER_CCgeoLongitude],
                  'umsatz' => number_format(Umsatz::year($item->kontokorrent->Kto, date('Y')),2),
                  'vorjahresUmsatz' => number_format(Umsatz::year($item->kontokorrent->Kto, date('Y')-1),2),
                  'letzteBestellung' => \Carbon\Carbon::parse($item->kontokorrent->LetzterUmsatz)->toDateString()           
             ];
         });
 dd($addressesFormated);

Я перебираю коллекцию и передаю каждое значение как key=>value. Это работает, но очень медленно. Мне нужно> 30 секунд, когда я пересекаю более 10 тысяч строк.

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

к сожалению, я не имею отношения

отношения: массив: 1 [ "контокоррент" => ноль ]

в массиве, когда я пытаюсь это сделать в моем контроллере:

$addresses = $addresses->with('kontokorrent:Kto')->take(10)->get(['Name1', 'LieferStrasse', 'LieferLand', 'LieferOrt', 'LieferPLZ', 'Telefon', 'EMail', 'USER_CCgeoLatitude', 'USER_CCgeoLongitude']);

        dd($addresses);

Я также пытался вставить Kto в функцию ->get(). Но я получаю ошибку.

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны включить обязательный столбец внешнего ключа:

$addresses->with('kontokorrent:Adresse,Kto')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...