为了账号安全,请及时绑定邮箱和手机立即绑定

laravel的模型的用法的问题

laravel的模型的用法的问题

森栏 2019-05-22 20:15:33
我看model里面一般都是写belongsTo或者hasMany这些写这些有什么用呢?下面是别人的Car模型中的代码我看他在控制器中用的时候这样写的$car=Car::find($id)这样好像也没有什么方便的啊还如直接写DB::table('car')呢为什么模型中要写belongsTo、hasMany这些玩意呢?publicfunctionuser(){return$this->belongsTo(User::class);}
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

使用模型和模型关系的好处是:
一旦定义好关系,随处可用。假如数据库命名不规范,去join的时候还得去关心join的外键是叫xx_id呢还是叫id呢
用关系比用join便于阅读。而且关系可以一直连下去,如:$order->user->userAddress->province->name,如果用join的话得join3个表。
用模型可以方便解耦。模型有creating、updating、deleting等事件,举个例子,当用户下单时需要给用户发一条短信,就可以监听order的created事件进行编码,不用把发短信代码放在创建订单的代码里;再举个例子,添加商品分类需要加个日志功能,但是添加分类有多个入口,比如在添加商品的时候可以输入个新分类添加商品同时添加分类,也可以在分类管理里去单独加分类,而这两个入口的添加分类的代码都是Category::create([xx]),如果要写日志的话使用模型监听器只需要在一个地方写即可。可以了解下。但如果他用的是DB::table()->insert的话是做不到只修改一个地方完成这功能的。
比如这个user控制器要查询用户昵称还要先引入data模型useAppModelsData;还不如DB::table('data')->where('uid',$uid)->get()一句话完事了呢
不能只考虑眼前的控制器,假如还有个order,存了个user_id,要输出user_name,定义好关系的话直接$order->user->user_name即可;假如还有个用户地址、用户优惠、用户xxx各种,每次join不觉得麻烦嘛。。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 688 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信