0

laravel で共通の関係を使用して単一のファイルに書き込み、その関係が必要なモデルでそのクラスを拡張するにはどうすればよいでしょうか。

モデル「Court」をご覧ください。

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');
    }
}

ここで上記のモデルには、都市、州という名前の 2 つのリレーションがあり、コードの繰り返しを許可する各モデルで共通です。これらのリレーションを 1 つのファイルに記述し、特定のモデルでそれを拡張するにはどうすればよいでしょうか。

4

1 に答える 1

0

デフォルトのモデル クラスを拡張する新しいカスタム モデル ベースを作成します。

namespace App;
use Illuminate\Database\Eloquent\Model;

class CustomModelBase extends Model {

public function find() {
   // Your custom find functionality goes here.
 }

  // etc
 }

すべてのアプリ モデルについて、モデルを拡張する代わりに、新しいカスタム モデルの基本クラスを拡張します。

namespace App;

class Post extends CustomModelBase {
}
于 2020-06-21T07:52:38.277 に答える