Разбиение на страницы: неопределенное свойство: Illuminate \ Pagination \ Paginator :: $ username error

Приведенное ниже сообщение приводит к ошибке «Неопределенное свойство: Illuminate \ Pagination \ Paginator :: $ username».

Как это должно быть сделано? Кажется, я получаю несколько ошибок (например, защищенное свойство & не объект) сколько бы раз я на него не смотрел?

AbsractRepository.php

/**
* Get Results by Page
*
* @param int $page
* @param int $limit
* @param array $with
* @return StdClass Object with $items and $totalItems for pagination
*/
public function getByPage($page = 1, $limit = 10, $with = array())
{
$result             = new StdClass;
$result->page       = $page;
$result->limit      = $limit;
$result->totalItems = 0;
$result->items      = array();

$query = $this->make($with);

$model = $query->skip($limit * ($page - 1))
->take($limit)
->get();

$result->totalItems = $this->model->count();
$result->items      = $model->all();

return $result;
}

BaseAdminController.php

/**
* List resources
*
* @return void
*/
public function index()
{
$page = Input::get('page', 1);
$data = $this->model->getByPage($page, 10);
$objects = Paginator::make($data->items, $data->totalItems, 10);
$this->layout->content = View::make($this->namespace . '::admin.index')
->with('objects', compact('objects'));
}

index.blade.php

@foreach($objects as $user)
<tr class="">
<td>{{ $user->username }}</td>
<td>{{ $user->first_name }} {{ $user->last_name }}</td>
<td>{{ $user->email }}</td>
<td class="center">Super Administrator</td>
<td class="center">YES</td>
<td class="center"><a href="#"><i class="fa fa-pencil"></i></a></td>
</tr>
@endforeach

0

Решение

Проблема, вероятно, здесь:

$model = $query->skip($limit * ($page - 1))
->take($limit)
->get();

$result->totalItems = $this->model->count();
$result->items      = $model->all();

за $model ты используешь get() а затем при назначении $result->items вы используете снова all() метод на это.

Здесь должно быть скорее:

$result->items      = $model;
0

Другие решения

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

/**
* List resources
*
* @return void
*/
public function index()
{
$page = Input::get('page', 1);
$data = $this->model->getByPage($page, 10);
$objects = Paginator::make($data->items, $data->totalItems, 10);
$this->layout->content = View::make($this->namespace . '::admin.index')
->withObjects($objects);
}

Это означает, что теперь я могу запустить foreach как обычно:

@foreach($objects as $user)
<tr class="">
<td>{{ $user->username }}</td>
<td>{{ $user->first_name }} {{ $user->last_name }}</td>
<td>{{ $user->email }}</td>
<td class="center">Super Administrator</td>
<td class="center">YES</td>
<td class="center"><a href="#"><i class="fa fa-pencil"></i></a></td>
</tr>
@endforeach

Это, кажется, делает свое дело, и все хорошо 🙂

0

По вопросам рекламы [email protected]