• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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(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中实现ORM模型使用第二个数据库设置
    • 使用laravel的Eloquent模型如何获取数据库的指定列
    • Laravel5.1 框架关联模型之后操作实例分析
    • Laravel5.1 框架模型多态关联用法实例分析
    • Laravel5.1 框架模型远层一对多关系实例分析
    • Laravel5.1 框架模型查询作用域定义与用法实例分析
    • Laravel5.1 框架模型软删除操作实例分析
    • Laravel5.1 框架模型创建与使用方法实例分析
    • Laravel框架视图和模型操作方法分析
    • Laravel 5框架学习之模型、控制器、视图基础流程
    • laravel学习教程之关联模型
    • laravel框架模型和数据库基础操作实例详解
    上一篇:Laravel5.1 框架模型查询作用域定义与用法实例分析
    下一篇:php 实现svg转化png格式的方法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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