Laravel 数据库模型方法

一对一关系:

A与B的关系:    A(id) =B(a_id)

在主表A中加入方法b():return  $this->hasOne('B');

在子表B中加入方法a():return  $this->belongsTo('A');

一对多关系:

A与B的关系:    A(id) =B(a_id)

在主表A中加入方法b():return$this->hasMany('B');

在子表B中加入方法a():return  $this->belongsTo('A');

多对多关系:

A(id)  B(id)  C(a_id,b_id)

在主表A中加入方法bs():return  $this->belongsToMany('B')->withPivot();

在子表B中加入方法as():return  $this->belongsToMany('A');

一对多再对多关系:

A有n个B,每个B有n个C,求A有多少C;

在主表A中加入方法cs():return  $this->hasManyThrough('C','B');

多态关系:

A(id) B(id) C(id,x_id,x_type)

A 表:c() :$this->morphMany('C','x');

B 表:c() :$this->morphMany('C','x');

C 表:x() :$this->morphTo();

查询关系存在性:

A(id)  B(a_id)

至少有一个B :has('bs')

存在where的B:whereHas('bs',function($query){     $query->where();   })

预加载与A有关系的所有B: A::with('b');

带where的预加载:whth([  'b'=>function($query){    $query->where();   }   ]);

延迟(获取A数据后再预加载B)$a->load(b);

save() : 保存模型实例;

create() : 保存数组;

多对多关系的操作:

添加新B : attach($bid,['b_name'=>'name']);

删除某B:detach($id);    所有 detach();

更新中间表:updateExistingPivot($bid,['name'=>'name']);

同步关联(校准):$a->bs()->sync(1,2,3);

更新子表,父ID的updated_at也会更新:$touches=['post'];

本地约束查询:scopeA();  调用  A::A()->get();

模型转数组:$a->toArray();

模型转json : $a->toJson();

加一些数据库不存在的值或自动改变字段:model中加 getXXXAttribute();(此方法自动加载)

自动修改某字段后保存:setXXXAttribute();

以上两种方法类似:$casts=['key'=>'needType'];

参考:https://laravel-china.org/articles/3818

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,741评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,038评论 18 399
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,831评论 0 17
  • 一. Java基础部分.................................................
    wy_sure阅读 9,277评论 0 11
  • 鲁迅的名言或许能更好地界定情怀:无限的远方,无数的人们,都与我有关。 情怀是一种超脱本我、惠及大众的普世境界。我们...
    谢sir说阅读 4,121评论 0 0