Laravel5.1 框架模型一对一关系实现与使用方法实例分析
本文实例讲述了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(AppUserInfo::class, function (FakerGenerator $faker) {
return [
'name' = $faker- name,
'phone_number' = $faker- phoneNumber,
];
});
使用seeder:
php artisan make:seeder UserInfoSeeder
public function run()
{
factory(AppUserInfo::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 = AppAccount::find(1);
// dd($account- user);
$userInfo = AppUserInfo::find(1);
dd($userInfo- account);
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- linux查看硬盘大小与挂载硬盘的实现
- centos6.5 安装hadoop1.2.1的教程详解【亲测版】
- Linux中没有rc.local文件的完美解决方法
- 详解linux lcd驱动编写
- Linux下安装telnet的方法
- Linux 安装二进制MySQL 及 破解MySQL密码的方法
- Linux创建进程达到65535的方法
- SSH 上传文件及文件夹到linux服务器的方法
- apache tika检测文件是否损坏的方法
- Linux下二进制编译安装MySql centos7的教程
- Linux 6 修改ssh默认远程端口号的操作步骤
- 基于python的Linux系统指定进程性能监控思路详解
- ubuntu下的虚拟环境中安装Django的操作方法
- 详解linux下umask的使用
- Linux下设置每天自动备份数据库的方法