我看model里面一般都是写belongsTo或者hasMany这些 写这些有什么用呢?下面是别人的Car模型中的代码 我看他在控制器中用的时候这样写的$car = Car::find($id) 这样好像也没有什么方便的啊 还如直接写DB::table('car')呢 为什么模型中要写belongsTo、hasMany这些玩意呢?
public function user()
{
return $this->belongsTo(User::class);
}
2 回答
精慕HU
TA贡献1845条经验 获得超8个赞
使用模型和模型关系的好处是:
- 一旦定义好关系,随处可用。假如数据库命名不规范,去
join
的时候还得去关心join
的外键是叫xx_id
呢还是叫id
呢 - 用关系比用
join
便于阅读。而且关系可以一直连下去,如:$order->user->userAddress->province->name
,如果用join
的话得join
3个表。 - 用模型可以方便解耦。模型有
creating
、updating
、deleting
等事件,举个例子,当用户下单时需要给用户发一条短信,就可以监听order
的created
事件进行编码,不用把发短信代码放在创建订单的代码里;再举个例子,添加商品分类需要加个日志功能,但是添加分类有多个入口,比如在添加商品的时候可以输入个新分类添加商品同时添加分类,也可以在分类管理里去单独加分类,而这两个入口的添加分类的代码都是Category::create([xx])
,如果要写日志的话使用模型监听器只需要在一个地方写即可。可以了解下。但如果他用的是DB::table()->insert
的话是做不到只修改一个地方完成这功能的。
比如这个user控制器要查询用户昵称 还要先引入data模型use AppModelsData;还不如DB::table('data')->where('uid',$uid)->get()一句话完事了呢
不能只考虑眼前的控制器,假如还有个order,存了个user_id,要输出user_name,定义好关系的话直接$order->user->user_name
即可;假如还有个用户地址、用户优惠、用户xxx各种,每次join不觉得麻烦嘛。。
- 2 回答
- 0 关注
- 416 浏览
添加回答
举报
0/150
提交
取消