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

你可能感兴趣的:(Laravel 数据库模型方法)