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

在上面的模型中,我们有两个关系,命名为城市,州,在每个模型中都是常见的,允许代码重复,所以我们如何将这些关系写在一个文件中并在特定模型中扩展它。

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 回答