Beste PRGers,
Op dit moment ben ik bezig met het ontwikkelen van een in-house web-applicatie waarin collega's kunnen zoeken in welke van onze software welke specifieke paketten gebruikt worden.
In MySQL heb ik de volgende twee tabellen:
Deze twee worden gekoppeld middels de volgende tabel:
Standaard wordt er een overzichtspagina getoond waarin alle combinaties tussen software (manifest) en bijbehorende pakketten getoond worden.
Omdat dit overzicht (naar verwachting) vrij snel zal groeien, heb ik ervoor gekozen pagination toe te passen op de resultaten.
Ik haal de resultaten uit de database en geef ze door aan de view:
Ik toon de data middels de volgende view
Het probleem waar ik nu tegenaan loop is dat er netjes 25 pakketten per pagina getoond worden, maar omdat ook alle manifests getoond worden. Derhalve wordt de lijst vele malen langer dan de beoogde 25 resultaten per pagina.
Ik ben op zoek naar een manier hoe ik kan zorgen dat er maar 25 rijen per pagina getoond worden.
Wanneer ik op het internet zoek kom ik de volgende vragen tegen:
Ik hoop dat jullie met mij mee kunnen denken.
Alvast bedankt!
Matis
Op dit moment ben ik bezig met het ontwikkelen van een in-house web-applicatie waarin collega's kunnen zoeken in welke van onze software welke specifieke paketten gebruikt worden.
In MySQL heb ik de volgende twee tabellen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Schema::create('manifests', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('job_name'); $table->string('git_branch'); $table->timestamps(); }); Schema::create('packages', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('architecture'); $table->string('version'); $table->unique(['name', 'architecture', 'version']); }); |
Deze twee worden gekoppeld middels de volgende tabel:
PHP:
1
2
3
4
5
6
7
| Schema::create('manifest_package', function (Blueprint $table) { $table->unsignedInteger('manifest_id')->nullable(); $table->unsignedInteger('package_id')->nullable(); $table->foreign('manifest_id')->references('id')->on('manifests')->onDelete('cascade'); $table->foreign('package_id')->references('id')->on('packages')->onDelete('cascade'); }); |
Standaard wordt er een overzichtspagina getoond waarin alle combinaties tussen software (manifest) en bijbehorende pakketten getoond worden.
Omdat dit overzicht (naar verwachting) vrij snel zal groeien, heb ik ervoor gekozen pagination toe te passen op de resultaten.
Ik haal de resultaten uit de database en geef ze door aan de view:
PHP:
1
2
3
4
5
6
7
| /* Niet relevante code is verwijderd */ public function index(Request $request) { $package_builder = Package::with('manifests'); $package = $package_builder->paginate(25); return view('manifest.index', compact('package')); } |
Ik toon de data middels de volgende view
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| @foreach($package as $p) @foreach($p->manifests as $m) <tr> <td>{{ $p->name }}</td> <td>{{ $p->architecture }}</td> <td>{{ $p->version }}</td> <td>{{ $m->name }}</td> <td>{{ $m->job_name }}</td> <td>{{ $m->git_branch }}</td> <td>{{ $m->created_at }}</td> <td>{{ $m->updated_at }}</td> </tr> @endforeach @endforeach |
Het probleem waar ik nu tegenaan loop is dat er netjes 25 pakketten per pagina getoond worden, maar omdat ook alle manifests getoond worden. Derhalve wordt de lijst vele malen langer dan de beoogde 25 resultaten per pagina.
Ik ben op zoek naar een manier hoe ik kan zorgen dat er maar 25 rijen per pagina getoond worden.
Wanneer ik op het internet zoek kom ik de volgende vragen tegen:
- https://laracasts.com/dis...hip-hasmany-limit-records
- https://stackoverflow.com...y-relationship-in-laravel
- https://stackoverflow.com...manytomany-paginate-issue
Ik hoop dat jullie met mij mee kunnen denken.
Alvast bedankt!
Matis
If money talks then I'm a mime
If time is money then I'm out of time