Ich versuche, ein Tag-löschen, das mit Kontrollkästchen funktioniert. Stellen Sie sich vor, der Benutzer hat ungefähr 10 Produkte und jedes Produkt hat 3 verschiedene Tags.Laravel - lösche mehrere Daten aus Pivot-Tabelle mit Checkbox
Derzeit kann der Benutzer nur ein einzelnes Tag löschen. Nach jedem Tag-Löschen wird die Seite aktualisiert und er kann ein anderes Tag löschen. Das ist nicht wirklich benutzerfreundlich. Deshalb versuche ich eine Mehrfachauswahl für Tags und lösche alle ausgewählten Tags mit einem Klick.
das ist wie es jetzt aussieht:
{!! Form::open(['action' => '[email protected]', 'method' => 'post']) !!}
<div class="container">
<div class="table-responsive">
<thead>
<tr>
<th>Product</th>
<th>Tags</th>
</tr>
</thead>
<tbody>
@foreach($products as $product)
<tr>
<td>{{ $product->name }}</td>
<td>
@foreach($product->tags as $tag)
{!! Form::hidden('tag_id', $tag->id) !!}
<input type="checkbox" name="xxxxx" value="{{ xxxx }}"><br>
@endforeach
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
{!! Form::button('Delete') !!}
{!! Form::close() !!}
Mein Problem ist, dass ich die product_id + tag_id brauchen, um sie zu lösen.
Wenn ich die Löschtaste drücken, erhalte ich diese Daten an meinen Controller übergeben:
{"tag_id":["285","284","285","286","279"],"product_id:"22"}
Das Hauptproblem ist, dass mein Programm gibt mir nur die allerletzte product_id. Egal, ob ich einen Tag von diesem Produkt ausgewählt habe. Es gibt mir immer diese product_id. Ich brauche auch etwas wie ein Mehrfach-Array, das an meinen Controller weitergegeben wird, um damit zu arbeiten.
So etwas wäre perfekt:
[0] = product_id = 1
tag_id = 50,60,80
[1] = product_id = 2
tag_id = 11,22,33
....
Meine Antwort auf Ihre Antwort:
Es tut mir leid für meine späte Antwort ..
ich es versucht habe und es funktioniert fast perfekt. Das einzige Problem ist, dass wenn zwei verschiedene Produkte das gleiche Tag haben, mein Programm nur das letzte Produkt mit seinem Tag zurückgibt. zum Beispiel: product_id2 tag_id 3: tag_id 3 bestanden
Aber ich bekomme nur die letzte product_id mit dem Tag
product_id 1 und 2 product_id haben 3.
Als Ausgang Ich brauche tag_id: product_id1 Alle anderen Produkte mit derselben tag_id werden ignoriert. So erhalte ich dies nur als Ergebnis:
product_id2 : tag_id3.
Ich hoffe, Sie verstehen, was ich versuche, mein Englisch zu sagen .. ist nicht die beste ..
Warum verwenden Sie keine "konstruierte" ID - wie die, die Sie bereits vorschlagen - für den Wert der Checkbox? Benennen Sie das Kontrollkästchen 'Löschen' oder etwas. Der Wert ist '' 'product_id .'- '. Tag_id'''. Dann sollten Sie ein Array in Ihren Controller bekommen wie '' '{'todelete': ['22-285', '22 -285 ', '23 -284', ...]' '' welches Sie einfach wieder dekonstruieren können um die richtigen Tags auf den Produkten zu löschen. – Kjell