Ich habe eine ziemlich einfache Frage über die Verwendung von Pivot-Tabellen in Laravel. Zuerst gebe ich einige Informationen über meine Situation, ich habe zwei Tabellen Namen "Fahrzeuge" und "Events". Jetzt möchte ich eine Tabelle erstellen, die für Fahrzeuge verwendet wird, die sich für eine Veranstaltung registriert haben. Nun würde die Beziehung zwischen diesen beiden Tabellen lauten: "Viele Fahrzeuge können sich für viele Ereignisse registrieren" und umgekehrt. Wäre eine Pivot-Tabelle der beste Weg, um dies zu erreichen, und wenn ja, könnten singulärere Werte in derselben Tabelle enthalten sein?Laravel Viele-zu-viele Pivot-Tabelle
0
A
Antwort
1
Sie können ein Ereignis mit mehreren Fahrzeugen verbinden und um ein Fahrzeug mehrere Ereignisse durch so etwas wie dies mit Ihren Modellen zu tun (nicht getestet):
Vehicle.php
<?php
namespace App;
use App\Event;
use Illuminate\Database\Eloquent\Model;
class Vehicle extends Model
{
...
/**
* Get the events that this vehicle belongs to.
*
* @return \App\Event
*/
public function events()
{
return $this->belongsToMany(Event::class, 'vehicle_event');
}
}
Ereignis. php
<?php
namespace App;
use App\Vehicle;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
...
/**
* Get the vehicles that this event has.
*
* @return \App\Vehicle
*/
public function events()
{
return $this->hasMany(Vehicle::class, 'vehicle_event');
}
}
Sie brauchen auch eine Migrationsdatei für die Pivot-Tabelle:
...
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('vehicle_event', function(Blueprint $table)
{
$table->integer('vehicle_id')->unsigned()->index();
$table->foreign('vehicle_id')->references('id')->on('vehicles');
$table->integer('event_id')->unsigned()->index();
$table->foreign('event_id')->references('id')->on('events');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('vehicle_event');
}
...
Dann können Sie attach()
und detach()
verwenden Fahrzeuge mit Ereignissen zu verbinden oder umgekehrt.
Verwandte Themen
- 1. Laravel/Laravel vs Laravel/Rahmen
- 2. Laravel 5 und Laravel 4
- 3. Laravel Rollen mit Laravel-Erlaubnis
- 4. Replizieren Laravel Sammlung - Laravel 5.3
- 5. Laravel Excel funktioniert nicht in Laravel 5.2
- 6. Laravel Middleware funktioniert nicht in Laravel 5.4
- 7. Laravel- Multiauth funktioniert nicht in Laravel 5.2
- 8. LARAVEL: Was Laravel x ist Version 1.3.3?
- 9. Laravel 5.2 multilanguage mit dimsav/laravel-übersetzbar
- 10. Laravel - mit array_walk_recursive() in einer Laravel-Klasse
- 11. Installieren von Laravel 4.1 mit Laravel Installer
- 12. Laravel 5: Socket.io-Clientauthentifizierung mit Laravel-Sitzungsdaten
- 13. Laravel 5.1 LTS laravel/Installer guzzlehttp Fehler
- 14. Laravel 5.1 ACL mit spatie/laravel-Erlaubnis
- 15. Unterschiedliches Verhalten in Laravel Homestead & Laravel Forge
- 16. Laravel Basispfad
- 17. Eloquent Laravel
- 18. Laravel: FatalErrorException
- 19. Laravel Middleware
- 20. Laravel Speicherproblem?
- 21. Laravel Formparameter
- 22. Laravel Hinzufügen?
- 23. Laravel nicht
- 24. Laravel Homestead
- 25. Laravel Sammlungen
- 26. Laravel Suchmaschine
- 27. Laravel jwtauth
- 28. Laravel subquery
- 29. Token Laravel
- 30. Laravel Beziehungsfehler
Wäre es möglich, den Pivot-Tisch mit einem anderen Tisch zu kombinieren, zum Beispiel habe ich eine Tabelle mit allgemeineren Informationen, und ich möchte auch das Ausland dort haben? – JoshuaJohnson2896
Sie können andere Felder zur Pivot-Tabelle hinzufügen, indem Sie etwas wie $ this-> hasMany (Vehicle :: class) -> withPivot ('column1', 'column2') verwenden; 'auf das mit' $ model-> zugegriffen werden kann pivot-> column1' – Winter
Danke, das ist genau das, was ich wissen wollte – JoshuaJohnson2896