诚城的成长 诚城的成长
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)

诚城

我有N个梦想……
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)
  • 入门指南
  • passport

  • 表单验证

  • 模型与迁移

    • uuid
    • 模型关联
      • 一对一
      • 一对多
      • 一对多 (反向) / 属于
      • 一对多检索
      • 远程一对一
      • 远程一对多
      • 多对多
      • 多态管理
      • 动态关联
      • 查询关联
      • 预加载
      • 插入及更新关联模型
      • 更新父级时间戳
    • 模型工厂
  • 中间件
  • event and listen
  • trait
  • artisan 命令
  • laravel9
  • 模型与迁移
诚城
2022-06-14
目录

模型关联原创

# 一对一

点击查看

定义关联

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * 获取与用户相关的电话记录
     */
    public function phone()
    {
        return $this->hasOne(Phone::class);
        return $this->hasOne(Phone::class, 'foreign_key'); // 会自动假定 Phone 模型有一个 user_id 的外键。如果你想重写这个约定,可以传递第二个参数给 hasOne 方法:
        return $this->hasOne(Phone::class, 'foreign_key', 'local_key'); // Eloquent 将会通过 Phone 记录的 user_id 列中查找与用户表的 id 列相匹配的值。如果你希望使用自定义的主键值,而不是使用 id 或者模型中的 $primaryKey 属性,你可以给 hasOne 方法传递第三个参数:
    }
}

定义反向关联

点击查看
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Phone extends Model
{
    /**
     * 获取拥有此电话的用户
     */
    public function user()
    {
        return $this->belongsTo(User::class); // 一般不用传 后两个参数
        return $this->belongsTo(User::class, 'foreign_key');// 如果 Phone 模型的外键不是 user_id,这时你可以给 belongsTo 方法的第二个参数传递一个自定义键名
        return $this->belongsTo(User::class, 'foreign_key', 'owner_key');//第三个参数,这个参数是在父模型中自己定义的字段名称
    }
}

使用

$phone = User::find(1)->phone;

# 一对多

点击查看
 public function comments()
{
    return $this->hasMany(Comment::class);
    return $this->hasMany(Phone::class, 'foreign_key'); // 会自动假定 Phone 模型有一个 user_id 的外键。如果你想重写这个约定,可以传递第二个参数
    return $this->hasMany(Phone::class, 'foreign_key', 'local_key'); // Eloquent 将会通过 Phone 记录的 user_id 列中查找与用户表的 id 列相匹配的值。如果你希望使用自定义的主键值,而不是使用 id 或者模型中的 $primaryKey 属性,你可以传递第三个参数
}

# 一对多 (反向) / 属于

点击查看
return $this->belongsTo(Post::class);
return $this->belongsTo(Post::class, 'foreign_key'); // Eloquent 将会默认 Post 模型在 comments 表中的外键是 post_id。如果不是,请在第二个参数进行修改
return $this->belongsTo(Post::class, 'foreign_key', 'owner_key'); //主表(Post 表)不使用 id 来作为它的主键的话,或者你想通过其他列来关联相关模型的话,那么可以传递一个参数来作为 belongsTo 方法的第三个参数,这个参数是主表(Post 表)中想要作为关联关系的字段的名称。

# 一对多检索

点击查看

# 远程一对一

点击查看

# 远程一对多

点击查看

# 多对多

点击查看

# 多态管理

点击查看

# 动态关联

点击查看

# 查询关联

点击查看

# 预加载

点击查看

# 插入及更新关联模型

点击查看

# 更新父级时间戳

点击查看

上次更新: 2022/08/23, 18:12:45
uuid
模型工厂

← uuid 模型工厂→

Theme by Vdoing | Copyright © 2022-2022 carveybunt | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
×

特别申明:

本站所有内容均为个人理解或转载,如有不当之处,敬请大佬指导!