罗田县升平网络工作室,一家专业从事网站建设的工作室

资讯论坛

 找回密码
 加入论坛

快捷登录

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。
查看: 841|回复: 0

Laravel5.1 框架模型一对一关系实现与使用方法实例分析

[复制链接]

710

主题

631

帖子

761

积分

社区达人

积分
761
发表于 2020-1-24 12:04:41 来自手机 | 显示全部楼层 |阅读模式
本文实例讲述了Laravel5.1 框架模型一对一关系实现与使用方法。分享给大家供大家参考,具体如下:
这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方便的功能。
1 实现一对一关系

1.1 准备工作

首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表。
这里 我们的逻辑是:一个用户信息下只能有一个账号,一个账号只能被一个用户所拥有,这就是一对一关系。
1.1.1 用户信息表

生成模型和迁移文件:
  1. php artisan make:model UserInfo -m
复制代码
编写迁移文件(表规格):
  1. public function up()  {    Schema::create('user_infos', function (Blueprint $table) {      $table->increments('id');      $table->string('name');      $table->string('phone_number');     // 手机号      $table->timestamps();    });  }
复制代码
编写模型工厂:
  1. // user_info$factory->define(App\UserInfo::class, function (Faker\Generator $faker) {  return [    'name' => $faker->name,    'phone_number' => $faker->phoneNumber,  ];});
复制代码
使用seeder:
  1. php artisan make:seeder UserInfoSeeder
复制代码
  1. public function run()  {    factory(\App\UserInfo::class, 10)->create();  }  public function run()  {    Model::unguard();    $this->call('UserInfoSeeder');    Model::reguard();  }
复制代码
生成数据并使用seeder填入数据:
  1. php artisan migrate:seeder
复制代码
1.1.2 账号表

编写迁移文件(表规格):
  1. public function up()  {    Schema::create('accounts', function (Blueprint $table) {      $table->increments('id');      $table->string('user_name');    // 用户名      $table->integer('user_info_id');  // 关联键      $table->timestamps();    });  }
复制代码
2 编写关系

首先是账号表,在模型下编写以下代码:
  1. 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的主键名。
然后是用户信息表:
  1. public function account()  {    return $this->hasOne(Account::class);  }
复制代码
代码解读:hasOne的第二个和第三个参数也是完全可以省略的。如果省略了第二个和第三个参数的话 Laravel会自动填充,会把第二个参数填充成 "user_info_id" 第三个参数填充 "id"。
使用:
  1. //  $account = App\Account::find(1);//  dd($account->user);  $userInfo = App\UserInfo::find(1);  dd($userInfo->account);
复制代码
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

来源:http://www.jb51.net/article/178046.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
打赏鼓励一下!
回复

使用道具 举报

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。

浏览排行

(40345)2019-11-5 公共云钱包资金盘骗局揭秘: 网络传销+原始股骗局合体!

(23465)2019-12-20 12月17日 邓智天法院直播庭审疑问全解答!

(22056)2019-12-1 环保币GEC资金盘骗局最新消息: 即将崩盘!

(18282)2019-11-9 巨胸肥臀大长腿,嫩模糯美子真人COS不知火舞福利污图

(16863)2018-12-24 罗田县人民法院公布【第五批失信被执行人名单】 ...

(16057)2019-11-3 曝光!PTFX已经崩盘跑路,投资者血流成河!

(14119)2019-8-7 湖北电力网上缴费,支付宝绑定户号的初始密码是什么?

(13849)2018-10-17 罗田县人民政府“12345”市民服务热线服务指南

(12194)2019-12-11 公安定性了, 趣码是非法传销! 趣码怎么退回365元?

(12010)2019-12-15 满足你对女同事的幻想 风骚秘书阿朱销魂眼神勾魂摄魄

最新发表

[升平网络工作室]2026-4-24 汪湘云到江夏区对接“双20”帮扶工作

[升平网络工作室]2026-4-24 [2026-04-24]罗田天气预报

[升平网络工作室]2026-4-23 周黎主持召开城市工作调研会

[升平网络工作室]2026-4-23 [2026-04-23]罗田天气预报

[升平网络工作室]2026-4-22 周黎调研城区重点项目建设工作

[升平网络工作室]2026-4-22 [2026-04-22]罗田天气预报

[升平网络工作室]2026-4-21 罗田县气象局关于开展2026年度雷电防护装置安全性能定期检测的公告

[升平网络工作室]2026-4-21 2026罗田春季全民健康跑圆满举行

[升平网络工作室]2026-4-21 [2026-04-21]罗田天气预报

[升平网络工作室]2026-4-20 罗田县政府招商组举行2026年招商引资工作推进会

QQ|Archiver|手机版|小黑屋|资讯论坛BBS.SPW8.CN ( 鄂ICP备2021011341号-3 )|网站地图


手机扫一扫继续访问
[免责声明]
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

进入社区 | 发表新帖 | 百度收录 |
技术提供:罗田县升平网络工作室
站长Email:kefu@spw8.cn
投诉电话(刮开查看):15374567400

GMT+8, 2026-4-24 03:30 , Processed in 0.470519 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表