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

 更新时间:2020-01-24 13:00:38   作者:佚名   我要评论(0)

本文实例讲述了Laravel5.1 框架模型一对一关系实现与使用方法。分享给大家供大家参考,具体如下:
这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方

本文实例讲述了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常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • Laravel 关联模型-关联新增和关联更新的方法
  • Laravel关联模型中过滤结果为空的结果集(has和with区别)
  • laravel学习教程之关联模型
  • Laravel5.1 框架模型多态关联用法实例分析
  • Laravel等框架模型关联的可用性浅析
  • Laravel Eloquent分表方法并使用模型关联的实现
  • Laravel 模型关联基础教程详解
  • Laravel5.1 框架模型远层一对多关系实例分析
  • Laravel5.1 框架模型查询作用域定义与用法实例分析
  • Laravel5.1 框架模型创建与使用方法实例分析
  • Laravel5.1 框架关联模型之后操作实例分析

相关文章

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

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

    本文实例讲述了Laravel5.1 框架模型一对一关系实现与使用方法。分享给大家供大家参考,具体如下: 这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方
    2020-01-24
  • php 实现svg转化png格式的方法分析

    php 实现svg转化png格式的方法分析

    本文实例讲述了php 实现svg转化png格式的方法。分享给大家供大家参考,具体如下: svg转png实现 1.php imagick扩展插件 a.研究imagick插件方法 $im = new Imagick
    2020-01-24
  • header函数设置响应头解决php跨域问题实例详解

    header函数设置响应头解决php跨域问题实例详解

    设置允许访问的域名: 1、允许全部的域名访问 header("Access-Control-Allow-Origin:*"); 2、允许指定域名访问 header( 'Access-Control-Allow-Origin:http://
    2020-01-24
  • Laravel5.1 框架模型远层一对多关系实例分析

    Laravel5.1 框架模型远层一对多关系实例分析

    本文实例讲述了Laravel5.1 框架模型远层一对多关系。分享给大家供大家参考,具体如下: 远层一对多我们可以通过一个例子来充分的了解它: 每一篇文章都肯定有并且只
    2020-01-24
  • Laravel5.1 框架文件管理操作实例分析

    Laravel5.1 框架文件管理操作实例分析

    本文实例讲述了Laravel5.1 框架文件管理操作。分享给大家供大家参考,具体如下: Laravel提供了一套很好用的文件系统 方便于管理文件夹和文件,支持Amazon S3和Rack
    2020-01-24
  • Laravel5.1 框架模型多态关联用法实例分析

    Laravel5.1 框架模型多态关联用法实例分析

    本文实例讲述了Laravel5.1 框架模型多态关联用法。分享给大家供大家参考,具体如下: 什么是多态关联? 一个例子你就明白了:好比如说评论 它可以属于视频类 也可以
    2020-01-24
  • Laravel5.1 框架关联模型之后操作实例分析

    Laravel5.1 框架关联模型之后操作实例分析

    本文实例讲述了Laravel5.1 框架关联模型之后操作。分享给大家供大家参考,具体如下: 之前写过关于模型关联的笔记,但是模型关联好后的一些使用没有介绍,今天补上
    2020-01-24
  • laravel框架学习记录之表单操作详解

    laravel框架学习记录之表单操作详解

    本文实例讲述了laravel框架学习记录之表单操作。分享给大家供大家参考,具体如下: 1、MVC数据流动 拿到一个laravel项目最基本的是弄清楚它的页面请求、数据流动是怎
    2020-01-24
  • Laravel5.1 框架分页展示实现方法实例分析

    Laravel5.1 框架分页展示实现方法实例分析

    本文实例讲述了Laravel5.1 框架分页展示实现方法。分享给大家供大家参考,具体如下: Laravel为我们提供了一套分页的逻辑,我们无需自己实现分页逻辑,只需要执行几
    2020-01-24
  • PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法。分享给大家供大家参考,具体如下: 我们知道,变量呢,其实就相当于我们用来储存信息
    2020-01-24

最新评论