Skip to content

Commit

Permalink
Model Updates (Relationships) (nabeelio#1573)
Browse files Browse the repository at this point in the history
* Return Types and New Relationships

Added return types to current relationships

Added new relationships to Airport, Airline, Flight, Rank

* Update Aircraft.php

Fix for Znck BelongsToThrough return type check

* Update Aircraft.php

* StyleCi Fixes

* Update Flight.php

Switching from HasOne to BelongsTo for SimBrief test case
  • Loading branch information
FatihKoz committed Aug 8, 2023
1 parent e24df83 commit 9081bdb
Show file tree
Hide file tree
Showing 23 changed files with 196 additions and 142 deletions.
5 changes: 3 additions & 2 deletions app/Models/Acars.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Models\Casts\FuelCast;
use App\Models\Traits\HashIdTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
* @property string id
Expand Down Expand Up @@ -77,9 +78,9 @@ class Acars extends Model
];

/**
* FKs
* Relationships
*/
public function pirep()
public function pirep(): BelongsTo
{
return $this->belongsTo(Pirep::class, 'pirep_id');
}
Expand Down
18 changes: 11 additions & 7 deletions app/Models/Aircraft.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Znck\Eloquent\Relations\BelongsToThrough as ZnckBelongsToThrough;
use Znck\Eloquent\Traits\BelongsToThrough;

/**
Expand Down Expand Up @@ -137,34 +141,34 @@ public function landingTime(): Attribute
}

/**
* foreign keys
* Relationships
*/
public function airline()
public function airline(): ZnckBelongsToThrough
{
return $this->belongsToThrough(Airline::class, Subfleet::class);
}

public function airport()
public function airport(): BelongsTo
{
return $this->belongsTo(Airport::class, 'airport_id');
}

public function hub()
public function hub(): HasOne
{
return $this->hasOne(Airport::class, 'id', 'hub_id');
}

public function pireps()
public function pireps(): HasMany
{
return $this->hasMany(Pirep::class, 'aircraft_id');
}

public function simbriefs()
public function simbriefs(): HasMany
{
return $this->hasMany(SimBrief::class, 'aircraft_id');
}

public function subfleet()
public function subfleet(): BelongsTo
{
return $this->belongsTo(Subfleet::class, 'subfleet_id');
}
Expand Down
21 changes: 14 additions & 7 deletions app/Models/Airline.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
use App\Models\Traits\JournalTrait;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str;

Expand Down Expand Up @@ -110,26 +113,30 @@ public function icao(): Attribute
}

/*
* FKs
* Relationships
*/

public function subfleets()
public function subfleets(): HasMany
{
return $this->hasMany(Subfleet::class, 'airline_id');
return $this->hasMany(Subfleet::class, 'id', 'airline_id');
}

public function aircraft()
public function aircraft(): HasManyThrough
{
return $this->hasManyThrough(Aircraft::class, Subfleet::class);
}

public function flights()
public function flights(): BelongsTo
{
return $this->belongsTo(Flight::class, 'airline_id');
}

public function pireps()
public function pireps(): BelongsTo
{
return $this->belongsTo(Pirep::class, 'airline_id');
}

public function users(): HasMany
{
return $this->hasMany(User::class, 'id', 'airline_id');
}
}
31 changes: 31 additions & 0 deletions app/Models/Airport.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Models\Traits\FilesTrait;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
Expand Down Expand Up @@ -138,4 +139,34 @@ public function tz(): Attribute
]
);
}

/**
* Relationships
*/
public function departures(): HasMany
{
return $this->hasMany(Flight::class, 'dpt_airport_id');
}

public function arrivals(): HasMany
{
return $this->hasMany(Flight::class, 'arr_airport_id');
}

public function aircraft(): HasMany
{
return $this->hasMany(Aircraft::class, 'airport_id');
}

public function pilots(): HasMany
{
// Users currently at this airport
return $this->hasMany(User::class, 'curr_airport_id');
}

public function users(): HasMany
{
// Users based at this airport
return $this->hasMany(User::class, 'home_airport_id');
}
}
5 changes: 3 additions & 2 deletions app/Models/Bid.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Contracts\Model;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
* @property int user_id
Expand All @@ -29,12 +30,12 @@ class Bid extends Model
/**
* Relationships
*/
public function flight()
public function flight(): BelongsTo
{
return $this->belongsTo(Flight::class, 'flight_id');
}

public function user()
public function user(): BelongsTo
{
return $this->belongsTo(User::class, 'user_id');
}
Expand Down
8 changes: 5 additions & 3 deletions app/Models/Expense.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
use App\Models\Casts\CommaDelimitedCast;
use App\Models\Traits\ReferenceTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphTo;

/**
* @property int airline_id
Expand Down Expand Up @@ -53,14 +55,14 @@ class Expense extends Model
];

/**
* Foreign Keys
* Relationships
*/
public function airline()
public function airline(): BelongsTo
{
return $this->belongsTo(Airline::class, 'airline_id');
}

public function ref_model()
public function ref_model(): MorphTo
{
return $this->morphTo();
}
Expand Down
8 changes: 4 additions & 4 deletions app/Models/Fare.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Contracts\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
Expand Down Expand Up @@ -53,11 +54,10 @@ class Fare extends Model
];

/**
* any foreign keys
* Relationships
*/
public function subfleets()
public function subfleets(): BelongsToMany
{
return $this->belongsToMany(Subfleet::class, 'subfleet_fare')
->withPivot('price', 'cost', 'capacity');
return $this->belongsToMany(Subfleet::class, 'subfleet_fare')->withPivot('price', 'cost', 'capacity');
}
}
43 changes: 27 additions & 16 deletions app/Models/Flight.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;

Expand Down Expand Up @@ -224,46 +228,53 @@ public function days(): Attribute
/*
* Relationships
*/

public function airline()
public function airline(): BelongsTo
{
return $this->belongsTo(Airline::class, 'airline_id');
}

public function dpt_airport()
public function dpt_airport(): HasOne
{
return $this->belongsTo(Airport::class, 'dpt_airport_id');
return $this->hasOne(Airport::class, 'id', 'dpt_airport_id');
}

public function arr_airport()
public function arr_airport(): HasOne
{
return $this->belongsTo(Airport::class, 'arr_airport_id');
return $this->hasOne(Airport::class, 'id', 'arr_airport_id');
}

public function alt_airport()
public function alt_airport(): HasOne
{
return $this->belongsTo(Airport::class, 'alt_airport_id');
return $this->hasOne(Airport::class, 'id', 'alt_airport_id');
}

public function fares()
public function fares(): BelongsToMany
{
return $this->belongsToMany(Fare::class, 'flight_fare')
->withPivot('price', 'cost', 'capacity');
return $this->belongsToMany(Fare::class, 'flight_fare')->withPivot('price', 'cost', 'capacity');
}

public function field_values()
public function field_values(): HasMany
{
return $this->hasMany(FlightFieldValue::class, 'flight_id');
return $this->hasMany(FlightFieldValue::class, 'flight_id', 'id');
}

public function simbrief()
public function simbrief(): BelongsTo
{
// id = key from table, flight_id = reference key
return $this->belongsTo(SimBrief::class, 'id', 'flight_id');
}

public function subfleets()
public function subfleets(): BelongsToMany
{
return $this->belongsToMany(Subfleet::class, 'flight_subfleet');
}

public function user(): BelongsTo
{
return $this->belongsTo(User::class, 'id', 'user_id');
}

public function event(): BelongsTo
{
return $this->belongsTo(Event::class, 'id', 'event_id');
}
}
3 changes: 2 additions & 1 deletion app/Models/FlightFieldValue.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Contracts\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
* Class FlightFieldValue
Expand Down Expand Up @@ -43,7 +44,7 @@ public function name(): Attribute
/**
* Relationships
*/
public function flight()
public function flight(): BelongsTo
{
return $this->belongsTo(Flight::class, 'flight_id');
}
Expand Down
22 changes: 8 additions & 14 deletions app/Models/Journal.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
use App\Support\Money;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphTo;

/**
* Holds various journals, depending on the morphed_type and morphed_id columns
Expand Down Expand Up @@ -46,29 +49,20 @@ class Journal extends Model
];

/**
* Get all of the morphed models.
* Relationships
*/
public function morphed()
public function morphed(): MorphTo
{
// Get all of the morphed models
return $this->morphTo();
}

/**
* Relationship
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function ledger()
public function ledger(): BelongsTo
{
return $this->belongsTo(Ledger::class);
}

/**
* Relationship
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactions()
public function transactions(): HasMany
{
return $this->hasMany(JournalTransaction::class);
}
Expand Down
3 changes: 2 additions & 1 deletion app/Models/JournalTransaction.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use App\Contracts\Model;
use App\Models\Traits\ReferenceTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
* @property string id UUID type
Expand Down Expand Up @@ -54,7 +55,7 @@ class JournalTransaction extends Model
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function journal()
public function journal(): BelongsTo
{
return $this->belongsTo(Journal::class);
}
Expand Down
Loading

0 comments on commit 9081bdb

Please sign in to comment.