Laravel 5.5关于模型

wlwcrazw  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(138)

我想有一个章节模型,包含一个地区列包含多个地区模型。但我不知道如何链接它。我只是做了模型和迁移。

class Chapter extends Model
{
  /**
   * The attributes that are mass assignable.
   *
   * @var array
   */
  protected $fillable = [
      'name',
  ];

  public function districts()
  {
    return $this->hasMany(District::class);
  }
}
class District extends Model
{
  /**
   * The attributes that are mass assignable.
   *
   * @var array
   */
  protected $fillable = [
      'name',
  ];

  public function chapter()
  {
      return $this->belongsTo(Chapter::class);
  }
  
  public function blocks()
  {
    return $this->hasMany(Block::class);
  }
}

在此之后我应该做什么?我需要在章节迁移文件中提到地区吗?
这是我的迁移文件。
一个二个一个一个
我需要在$fillable端链接它们吗?

68bkxrlz

68bkxrlz1#

您需要使用数据结构链接它们,以便Laravel Eloquent Relation可以利用这一点。
首先,确保您的数据库结构具有相关属性,例如,您的迁移应该看起来与此类似

class CreateDistrictsTable extends Migration
{
    public function up()
    {
        Schema::create('districts', function (Blueprint $table) {
            $table->increments('id');

            // all district related columns
            $table->unsignedBigInteger('chapter_id');
            $table->timestamps();
        });
    }
}

districts表中的chapter_id列充当外键约束,并连接特定章节下的所有地区。
Chapter类中,您需要定义如下关系(您已经完成了):

public function districts()
{
    return $this->hasMany(District::class);
}

然后,您可以通过调用districts()方法检索给定章节的所有地区。例如,要获取chapter Id = 1的所有地区,您可以执行以下操作:

App\Chapter::find(1)->districts

相关问题