1. 程式人生 > 程式設計 >Laravel5.1 框架模型遠層一對多關係例項分析

Laravel5.1 框架模型遠層一對多關係例項分析

本文例項講述了Laravel5.1 框架模型遠層一對多關係。分享給大家供大家參考,具體如下:

遠層一對多我們可以通過一個例子來充分的瞭解它:

每一篇文章都肯定有並且只有一個釋出者 釋出者可以有多篇文章,這是一個一對多的關係。一個釋出者可以來自於一個國家 但是一個國家可以有多個釋出者,這又是一個一對多關係,那麼 這其中存在一個遠層的一對多就是"國家和文章的關係"。國家表可以通過釋出者表遠層關聯到文章表。

1 實現遠層一對多關係

1.1 文章表結構

  public function up()
  {
    Schema::create('articles',function (Blueprint $table) {
      $table->increments('id');
      $table->string('title');
      $table->text('body');
      $table->integer('user_id');
      $table->timestamps();
    });
  }

1.2 在users表中新增一列

  public function up()
  {
    Schema::table('users',function (Blueprint $table) {
      $table->integer('country_id');
    });
  }
  public function down()
  {
    Schema::table('users',function (Blueprint $table) {
      $table->dropColumn('country_id');
    });
  }

1.3 國家表結構

  public function up()
  {
    Schema::create('countries',function (Blueprint $table) {
      $table->increments('id');
      $table->string('name');
      $table->timestamps();
    });
  }

1.4 編寫一對多關係

首先是Country和User的關係:

Country模型:

  public function users()
  {
    return $this->hasMany(User::class);
  }

User模型:

  public function country()
  {
    return $this->belongsTo(Country::class);
  }

然後是User和Article的關係:

User模型:

  public function articles()
  {
    return $this->hasMany(Article::class);
  }

Article模型:

  public function user()
  {
    return $this->belongsTo(User::class);
  }


1.5 訪問遠端一對多關係

這是今天的主要內容,實現Country可遠層查詢到Article:

  public function articles()
  {
    /**
     * 建議第一個和第二個引數寫全,第三個第四個引數可省略使用預設(如果預設的沒問題)。
     */
    return $this->hasManyThrough(Article::class,User::class,'country_id','user_id');
  }

更多關於Laravel相關內容感興趣的讀者可檢視本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向物件程式設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家基於Laravel框架的PHP程式設計有所幫助。