laravel Свойство [id] не существует в этом экземпляре коллекции - PullRequest
0 голосов
/ 26 января 2020

Я не могу получить доступ к моей admin_table. Я знаю, что у меня есть проблемы с моим маршрутом на admin_table. Пожалуйста, помогите мне на моем маршруте. Свойство [id] не существует в этом экземпляре коллекции.

мой admin_table.blade

@foreach ($users as $positions)
    @foreach ($positions->admins as $position )
        <tbody>
        <tr>
            <td>{{ $position->id}}</td>
            <td>{{ $position->first_name}}</td>
            <td>{{ $position->last_name}}</td>
            <td>{{ $position->contact}}</td>
            <td>{{ $position->departments->department}}</td>
            <td>{{ $position->schoolpositions->school_position}}</td>
            <td>{{ $position->email}}</td>
            <th> <a href="{{action('DashboardController@edit',$position['id' =>$position->id])}} " class="btn btn-success">Edit </a>
            </th>
        </tr>
        </tbody>
    @endforeach

    </tr>
    </tbody>
@endforeach
@endforeach
</table>

это мой маршрут

Route::get('/admin_table', 'DashboardController@index');
Route::put('/admin_table/{id}', 'DashboardController@store');
Route::get('/admin_table', 'DashboardController@show');
Route::get('/teacher_editform/{id}', 'DashboardController@edit');
Route::put('/teacher_editform/{id}', 'DashboardController@update')->name('teacheradminpage.teacher_tableform.teacher_editform');

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

public function edit($id)
{
    $departments =  Department::find($id);
    $users =  Schoolposition::find($id);
    $students =  Student::find($id);
    $admins =  Admin::find($id);
    return view('teacheradminpage.teacher_tableform.teacher_editform', compact('departments','users','students','admins', 'id', 'id', 'id', 'id'));
}

Ответы [ 3 ]

0 голосов
/ 26 января 2020

У вас есть несколько проблем в этом коде, которые, вероятно, требуют внимания. Основная проблема с ошибкой position, по-видимому, заключается в том, что у вас есть круговой путь для получения этого $position на вкладке anchor внутри l oop.

не создавать то, что вы хотите:

@foreach ($users as $positions)

     @foreach ($positions->admins as $position )

Это грубо говоря - возьмите мою коллекцию пользователей и создайте новую коллекцию позиций, которые непосредственно связаны с каждым user объектом. Отсюда возьмите эту коллекцию из positions и попробуйте найти коллекцию администраторов, которые прикреплены к этой коллекции, а затем найдите $position. (Я думаю, что это близко к тому, что он пытается сделать ...)

Когда вы попадаете внутрь l oop и вашего anchor / route, вы спрашиваете anchor чтобы найти id на чем-то, что, вероятно, либо не существует, либо снова на коллекции.

Вы уже передали admins этому представлению. Было бы разумно использовать это как ваш элемент l oop верхнего уровня, нет?

Чтобы исправить , используйте admins как единственный элемент l oop:

 @foreach ($admins as $position )
0 голосов
/ 28 января 2020

Редактировать свой клинок с

@foreach ($users as $positions)
@if(!empty($positions->admins)
@foreach ($positions->admins as $position )
    <tbody>
    <tr>
        <td>{{ $position->id}}</td>
        <td>{{ $position->first_name}}</td>
        <td>{{ $position->last_name}}</td>
        <td>{{ $position->contact}}</td>
        <td>{{ $position->departments->department}}</td>
        <td>{{ $position->schoolpositions->school_position}}</td>
        <td>{{ $position->email}}</td>
        <th> <a href="{{action('DashboardController@edit',$position['id' =>$position->id])}} " class="btn btn-success">Edit </a>
        </th>
    </tr>
</tbody>
@endforeach
</tr>
</tbody>
@endforeach
@endif
@endforeach                                
</table>
0 голосов
/ 26 января 2020

Ваша проблема в том, что вы ставите дополнительные $position перед массивом. Ваш маршрут должен быть

<a href="{{action('DashboardController@edit',['id' =>$position->id])}} " class="btn btn-success">Edit </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...