laravel 中的Eloquent 极大的简化了我们的代码,使用起来极其方便,一个方法就能搞定很多东西!
1,一对一 hasOne
比如有一张用户表,一张phones表,用户表中有一个字段 phone_id ,phones中有user_id ,简单点就是说你中有我,我中有你的意思,都是存着对方的id,在user模型中定义一个 phone的方法 rturn $this->hasOne('App\Phone'); //这样在获取user的时候,只需要 User::find(1)->phone; 这样便可以得到用户在phone中的号码
反向关联:所谓的反向关联就是从phone模型中找到一个用户 belongsTo('App\User') ,如果是绝对的一对一的话,这里依然可以使用hasOne,当然,如果有多个用户用同一个号码,这里还可以使用hasMany(); 极其的方便灵活。
2,一对多
就如上面所说的,当一个号码被多人使用的时候,可以在Phone中使用 hasMany() ;获得使用该号码的所有用户!
反向关联:belongsTo
3,多对多
一个用户有多种身份,一个身份可以被多个用户使用,因此需要第三张数据表,在次表中需要同时包含用户表和身份表的id,然后用belongsToMany()便可以获取到!
在这里介绍一个5.3出现的方法 toggle();方法的作用是 有就删除,没有就添加。用于点赞,或者关注,简直是完美之极!大体上就是当用户表和角色表关联后 $user = User::find(1);$role = Role::find(1); $user->roles()->toggle($role);这样的话便可以实现添加或者删除!
其实以上的三种方法就可以解决很多实际需求,后面就不介绍多态等!
网友评论