Laravel, когда база данных пуста, я получаю ошибку, иначе нет, но я должен использовать это - PullRequest
0 голосов
/ 09 ноября 2018
        $employee = Employee::where('user_id', Auth::user()->id)->get();

            foreach (Company::all() as $company)
                {
                    if ($company->id == $employee[0]->company_id && $company->employee_active === 1)
                    {
                        $event->menu->add([
                            'text'        => 'Contracten',
                            'url'         => 'dashboard/contracts',
                            'icon'        => 'file-text',
                            'submenu' => [
                                [
                                    'text' => 'Contract opzetten',
                                    'url'  => 'dashboard/contracts/create',
                                    'icon_color' => 'red',
                                ]
                            ]
                        ]);
                    }
                }

Когда я использую этот код, я получаю неопределенное смещение: 0, если база данных пуста. Как можно это написать? Должен ли я использовать if или что-то подобное

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

@ Решение Джо верное. Вы можете загружать компании и сотрудников, чтобы избежать проблем с запросами N + 1. Есть официальный пример этого случая: https://laravel.com/docs/5.7/eloquent-relationships#eager-loading

0 голосов
/ 09 ноября 2018

На самом деле вы должны правильно настроить свои отношения, чтобы вы могли

$companies = Company::all();

foreach($companies as $company){

    foreach($company->employees as $employee){

        if($employee->active){
          ....
        }   

    }

}

Но в вашем случае вы можете изменить свою первую строку на

 $employee = Employee::where('user_id', Auth::user()->id)->first();

, который будет возвращать коллекцию объектов Employee, а не массив, поэтому вам не нужно использовать [index] для получения первого объекта.

...