Comment créer une Pagination avec belongsToMany

Ce sujet est résolu
177926
,

Bonjour,

Voila je rencontre un petit problème avec mon code. J'ai plusieurs tables reliées en belongsToMany,
comment peut on créer une pagination sur ce type de table ?

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Route

Route::get('/','MorceauController@index');
Route::get('/morceau/read/{uuid}', 'MorceauController@read')->name('morceau.read');
Route::get('/morceau/{id}', 'MorceauController@post_unique')->where('id', '[0-9]+');
Route::get('/categorie/{id}', 'CategorieController@categorie_unique')->where('id', '[0-9]+');
Route::get('/atmosphere/{id}', 'AtmosphereController@atmosphere_unique')->where('id', '[0-9]+');
Route::get('/instrument/{id}', 'InstrumentController@instrument_unique')->where('id', '[0-9]+');
Route::get('/compositeur/{id}', 'CompositeurController@compositeur')->where('id', '[0-9]+');

MorceauController

 public function index(Request $request)
  {
    $posts = Morceau::paginate(3);
    $posts = $posts->shuffle();


    $categories = Categorie::All()->sortBy('libelle');
    $atmospheres = Atmosphere::All()->sortBy('libelle');
    $instruments = Instrument::All()->sortBy('nom');
    $compositeurs = Compositeur::All()->sortBy('nom');


    return View('layouts/morceau')->with(array(
      "morceaux" => $posts,
      "atmospheres" => $atmospheres,
      "categories" => $categories,
      "instruments" => $instruments,
      "compositeurs" => $compositeurs,
      "auteur" => 'Visuelsound'
    ));

   }

morceau.blade.php

  @yield('contenu')

    {{ $posts->links() }}

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
ErrorException
Undefined variable: posts (View: /home/vagrant/code/train2/resources/views/layouts/master.blade.php)

2 Réponse

5574
,

Bonjour,

Je n'ai pas très bien compris ton problème.
L'erreur que tu as est normale, tu appelles {{ $posts->links() }} alors que les variables que tu envoies à ta vue n'ont pas ce nom là.

Vérifie le nom de tes variables que tu envoies de ton controller / que tu appelles depuis ta vue dans un premier temps.

177926
,

Bonjour Azorgh,

En supprimant cette variable {{ $posts->links() }} je n'ai plus d'erreur , la page apparaît normalement mon soucis c'est de paginer le reste de de la bdd et je ne sais pas comment m'y prendre...

<nav aria-label="Page navigation example">
  <ul class="pagination justify-content-end">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1" aria-disabled="true">Previous</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Next</a>
    </li>
  </ul>
</nav>