Laravel5.1 框架模型遠層一對多關係例項分析
阿新 • • 發佈:2020-01-10
本文例項講述了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程式設計有所幫助。