Как мы можем использовать общие отношения в laravel, чтобы записать в один файл и расширить этот класс в модели, где нам требуются эти отношения.
Пожалуйста, взгляните на модель «Суд»:
use Illuminate\Database\Eloquent\Model;
use Astrotomic\Translatable\Translatable;
use TranslatableContract;
class Court extends Model implements TranslatableContract
{
use Translatable;
public $translatedAttributes = ['title', 'description'];
public $fillable = ['court_type_id', 'state_id', 'city_id'];
public function courtType()
{
return $this->belongsTo('App\CourtType', 'court_type_id');
}
public function state()
{
return $this->belongsTo('App\State');
}
public function city()
{
return $this->belongsTo('App\City');
}
}
другая модель "CourtCase"
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Astrotomic\Translatable\Translatable;
use TranslatableContract;
class CourtCase extends Model implements TranslatableContract
{
use Translatable;
public $translatedAttributes = ['case_id', 'title', 'description'];
public $fillable = ['court_id', 'state_id', 'city_id'];
public function userable()
{
return $this->morphTo();
}
public function images()
{
return $this->morphMany('App\Image', 'imageable');
}
public function state()
{
return $this->belongsTo('App\State');
}
public function city()
{
return $this->belongsTo('App\City');
}
}
Здесь, в приведенных выше моделях, у нас есть два отношения, названные как city, состояние, которые являются общими для каждой модели, которые допускают повторение кода, так как мы можем их написать отношения в одном файле и расширить его в конкретной модели.