国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

Laravel5.1 框架模型一對一關系實現與使用方法實例分析

2024-07-09 22:43:02
字體:
來源:轉載
供稿:網友

本文實例講述了Laravel5.1 框架模型一對一關系實現與使用方法。分享給大家供大家參考,具體如下:

這篇文章主要記錄模型的一對一關系,關聯關系是Model的一種非常方便的功能。

1 實現一對一關系

1.1 準備工作

首先我們需要創建兩張表和對應的兩個模型,第一個模型是用戶表,第二個模型是賬號表。

這里 我們的邏輯是:一個用戶信息下只能有一個賬號,一個賬號只能被一個用戶所擁有,這就是一對一關系。

1.1.1 用戶信息表

生成模型和遷移文件:

php artisan make:model UserInfo -m

編寫遷移文件(表規格):

  public function up()  {    Schema::create('user_infos', function (Blueprint $table) {      $table->increments('id');      $table->string('name');      $table->string('phone_number');     // 手機號      $table->timestamps();    });  }

編寫模型工廠:

// user_info$factory->define(App/UserInfo::class, function (Faker/Generator $faker) {  return [    'name' => $faker->name,    'phone_number' => $faker->phoneNumber,  ];});

使用seeder:

php artisan make:seeder UserInfoSeeder
  public function run()  {    factory(/App/UserInfo::class, 10)->create();  }  public function run()  {    Model::unguard();    $this->call('UserInfoSeeder');    Model::reguard();  }

生成數據并使用seeder填入數據:

php artisan migrate:seeder 

1.1.2 賬號表

編寫遷移文件(表規格):

  public function up()  {    Schema::create('accounts', function (Blueprint $table) {      $table->increments('id');      $table->string('user_name');    // 用戶名      $table->integer('user_info_id');  // 關聯鍵      $table->timestamps();    });  } 

2 編寫關系

首先是賬號表,在模型下編寫以下代碼:

  public function user()  {    return $this->belongsTo(UserInfo::class, 'user_info_id', 'id');  }

代碼解讀:belongsTo的第二個和第三個參數是完全可以省略的。如果省略了第二個和第三個參數的話 Laravel根據方法名自動填充,會把第二個參數填充成 "user_id" 第三個參數填充 "id",但是我們現在必須這樣寫,因為我自定義的外鍵是user_info_id 如果Laravel自動填充的話是找不到這個外鍵的 所以我們要手動的添加下。

belongsTo的第二個參數是 Account這個模型要用'user_info_id'外鍵去關聯UserInfo模型。

belongsTo的第三個參數是 Account這個模型要關聯UserInfo的主鍵名。

然后是用戶信息表:

  public function account()  {    return $this->hasOne(Account::class);  }

代碼解讀:hasOne的第二個和第三個參數也是完全可以省略的。如果省略了第二個和第三個參數的話 Laravel會自動填充,會把第二個參數填充成 "user_info_id" 第三個參數填充 "id"。

使用:

//  $account = App/Account::find(1);//  dd($account->user);  $userInfo = App/UserInfo::find(1);  dd($userInfo->account);

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民县| 顺义区| 正定县| 聂拉木县| 武汉市| 长兴县| 黄骅市| 彭州市| 壤塘县| 二手房| 靖江市| 琼海市| 新野县| 阜宁县| 铅山县| 廊坊市| 海南省| 咸阳市| 正安县| 湘潭县| 新建县| 玉田县| 雷州市| 鄂托克旗| 芷江| 湛江市| 延边| 岢岚县| 吉首市| 崇文区| 铜鼓县| 永顺县| 济源市| 司法| 宜兰市| 理塘县| 广西| 松原市| 子洲县| 铁岭县| 商丘市|