Laravel Eloquent Orm 使用指南
例如比如又两张表,一张部门表,一张经理表,一个部门只有一个经理,一个经理也只控制一个部门,就表达了一对一的关系
class User extends Eloquent {
//一对一
public function dept() {
return $this->hasOne('Dept'); // this matches the Eloquent model
}
class Dept extends Eloquent {
public function user() {
return $this->belongsTo('user'); // this matches the Eloquent model
}
我们可以总结出,在一对一关系中,主表(也就是没有保存user_id表的那个表),用hasOne表示,另外一个表,保存了user_id的,用belongsTo来表述。换句话说,当我们看到一个表有blongsTo的时候,如果后面没有带参数,也就代表着这个表利用方法名_id来跟前面的表关联
2、描述1vs多关系
例如班级表,学生表,一个班级有很多名学生,一个学生只在一个班级,因此class表跟student表是一对多关系
class Squad extends Eloquent {
//一对多
public function student() {
return $this->hasMany('Student');
}
class Student extends Eloquent {
public function squad() {
return $this->belongsTo('Squad');
}
我们可以总结出,在一对多关系中,主表(也就是没有保存squad_id表的那个表),用hasMany表示,另外一个表,保存了squad_id的,用 belongsTo来表述。
3、描述多对多关系
例如角色表,用户表,一个角色有多个用户,一个用户可以拥有多个角色
Class Role extentds Eloquent{
public function User{
return $this->belongsToMany('Role','user_role');
}
}
PS:其实我们并非一定要在我们的模型中写这么多可能另我们自己都费解的东西,只是根据需要我们需要进行某些查询的时候才写,举个简单例子,如果我们只需要查一个角色有多少个用户,而我们发现角色跟用户是多对多关系,我们就可以在Role表中写个User方法。如果我们需要查一个班级的所有学生,我们发现班级跟学生是一对多关系,我们就可以在班级模型中写Student方法,用到hasMany。
我们没有必要为这些东西引乱了我们的思维,一切根据实际需求来,需要查询的时候,再想关系,再写方法。例如我要查某个角色的用户,我们心中要清楚角色跟用户是多多对关系,自然而然就会用到blongsToMany,而不是我们凭空提前就去捏造。
上一篇: php进阶:实现无限分类_PHP
推荐阅读
-
Laravel Eloquent Orm 使用指南
-
Laravel ORM 对“Model::find”怎么进行缓存
-
[ Laravel 5.2 文档 ] Eloquent ORM -- 序列化
-
Laravel 5框架学习之Eloquent (laravel 的ORM)_php实例
-
Laravel 5框架学习之Eloquent (laravel 的ORM)_PHP
-
在Laravel 5.2中,如果使用DB门面代替Eloquent ORM,性能会提高多少?
-
laravel Eloquent create方法插入数据,如何知道是否更新成功?
-
Laravel 5框架学习之Eloquent (laravel 的ORM)
-
[ Laravel 5.2 文档 ] Eloquent ORM -- 集合
-
Eloquent ORM学习笔记