Laravel неопределенное смещение - PullRequest
0 голосов
/ 16 октября 2018

У меня есть сайт, который показывает мне предложения пользователей:

с foreach Я вижу все предложения

@foreach ($praktikas as $praktika)
    <div class="col-12 col-md-6 col-lg-4 pt-4 card-wrapper">
        <div class="card offer-card">
            <div class="card-image">
                <img class="img-fluid" alt="Logo der Firma: {{$user[$praktika->firma -1]->avatar}}" src="{{ asset('uploads/avatars/' . $user[$praktika->firma -1]->avatar) }}">
            </div>

            <div class="card-body">
                <h4 class="text-dark">{{ $praktika->stellenname }}</h4>
                <a href="{{ route('angebot.details',['id'=>$praktika->firma]) }}">Jetzt mehr anzeigen »</a>
            </div>
        </div>
    </div>
@endforeach

теперь у меня есть новый пользователь с идентификатором 88, но онназывает меня неопределенным offset: 87 ??

Я знаю, в чем проблема, потому что это:

$user[$praktika->firma -1]->avatar

не может найти пользователя с идентификатором 88

если я хочу показать таких пользователей:

$user[83]->avatar

все работает, но это показывает, что у меня нет пользователя с идентификатором 88, но я вижу его в своей базе данных, у меня есть этот пользователь!

Не знаю, что делать?потому что он работает все время, и теперь я не знаю, что случилось.

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

public function showpraktika()
{
    $praktikas = DB::table('angebots')
        ->where('stellentyp', 'Praktikum')
        ->orderBy('stellenname', 'asc')
        ->get();
    $row = DB::table('angebots')
        ->where('stellentyp', 'Praktikum')
        ->count();
    $user = DB::table('users')->get();
    return view('user/praktika', ['praktikas' => $praktikas, 'row' => $row, 'user' => $user]);
}

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

когда вы пишете $ user [88], вы не ищете пользователя с id = 88, вы ищете индекс.

Если пользователь является коллекцией Laravel, используйте:

$user->firstWhere('id', $praktika->firma -1)->avatar;

Здесь вы можете увидеть все доступные методы для коллекций в Laravel, это довольно полезно: https://laravel.com/docs/5.7/collections#available-methods

0 голосов
/ 16 октября 2018

Вы получаете доступ к массиву $user[] по индексу (88) здесь.

<img class="img-fluid" alt="Logo der Firma: {{$user[$praktika->firma -1]->avatar}}"
    src="{{ asset('uploads/avatars/' . $user[$praktika->firma -1]->avatar) }}">

, но в ваших $user[] ключах не равны вашим идентификаторам пользователей.это индексированный массив с нулями.

так что вы можете сделать это

Контроллер

$users = collect();

foreach(DB::table('users')->get() as $user) {
    $users->put($user->id, $user);
}
0 голосов
/ 16 октября 2018

Чтобы получить пользователя по идентификатору, используйте User::find($your_id_here);

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