У меня довольно простой вопрос об использовании сводных таблиц в laravel. Сначала я плохо расскажу о своей ситуации, у меня есть две таблицы: «Транспортные средства» и «События». Теперь я хотел бы создать таблицу, которая будет использоваться для хранения автомобилей, зарегистрированных на мероприятии. Теперь отношения между этими двумя таблицами состоят в том, что «Многие транспортные средства могут регистрироваться для многих событий» и наоборот. будет ли сводная таблица наилучшим способом выполнить это, и если бы это могло быть больше сингулярных значений в одной таблице?Laravel Таблица «Множество ко многим»
0
A
ответ
1
можно связать событие с несколькими транспортными средствами и транспортное средство для нескольких событий, делая что-то подобное с вашими моделями (не проверено):
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');
}
}
событий. 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');
}
}
Вам также понадобится файл переноса для поворотный стол:
...
/**
* 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');
}
...
Затем вы можете использовать attach()
и detach()
связать транспортные средства с событиями, или наоборот.
Можно ли совместить сводную таблицу с другой таблицей, например, у меня есть таблица с более общей информацией, и я хотел бы иметь там иностранец? – JoshuaJohnson2896
Вы можете добавить другие поля в сводную таблицу, используя что-то вроде '$ this-> hasMany (Vehicle :: class) -> withPivot ('column1', 'column2');' которые можно получить с помощью '$ model-> pivot-> column1' – Winter
Спасибо, это именно то, что я хотел знать – JoshuaJohnson2896