2016-11-09 3 views
2

Я хочу создать leftjoin с разбиением на страницы на laravel. Как создать разбиение на страницы с левой стороны?Laravel pagination at leftjoin

Вот мой код:

$news = News::leftJoin('categories','news.category_id', '=', 'categories.id') 
     ->select('news.*' ,'categories.category') 
     ->get()->sortByDesc('created_at'); 

Раньше я использовать $news = News::paginate(10); и его работы, но без LeftJoin.

и вот мой HTML-код, чтобы создать пагинация

{{$news->links('vendor.pagination.pagination')}} 
+0

sortByDesc () должно быть до получения() –

ответ

3

Функция постраничной должна быть сделана на объект Query Builder, а не на сбор возвращенного get().

$news = News::leftJoin('categories','news.category_id', '=', 'categories.id') 
     ->select('news.*' ,'categories.category') 
     ->paginate(10); 

То же самое касается сортировки. Когда вы вызываете get()->sortByDesc(), вы получаете коллекцию, затем сортируете коллекцию через PHP. Обычно вы хотите использовать orderBy() в построителе запросов для сортировки по SQL.

$news = News::leftJoin('categories','news.category_id', '=', 'categories.id') 
     ->select('news.*' ,'categories.category') 
     ->orderBy('created_at', 'DESC') 
     ->paginate(10); 
+0

спасибо , но он получает ошибку 'Call to undefined method Illuminate \ Database \ Query \ Builder :: links()' now. как показать разбивку на страницы на мой взгляд? Я использовал этот код '{{$ news-> links()}}' – rafitio

+0

Здесь вам что-то не хватает, он говорит, что '$ news' по-прежнему является объектом построителя запросов вместо объекта paginator. – Devon

+0

спасибо, что сейчас работает – rafitio

0

Использование Красноречивыми: Отношения

Например:

news.php модели

class News extends Model 
    { 
     protected $primaryKey = 'id'; 

     function withCategories() { 
     return $this->hasOne('App\Categories', 'id', 'category_id'); 
    } 

    public function list(){ 
     News::with('withCategories')->orderBy('created_at', 'DESC') 
    ->paginate(10); 
    } 
} 

в news.blade.php (пример)

<table> 
<tbody> 
@foreach ($news as $news) 
<tr> 
<th>{{ $news->id }}</th> 
<td>{{ $news->title }}</td> 
<td>{{ $news->withCategories->title }}</td> <!-- Category name--> 
</tr> 
@endforeach 
</tbody> 
</table> 
</div>