猿问

laravel的模型的用法的问题

我看model里面一般都是写belongsTo或者hasMany这些 写这些有什么用呢?下面是别人的Car模型中的代码 我看他在控制器中用的时候这样写的$car = Car::find($id) 这样好像也没有什么方便的啊 还如直接写DB::table('car')呢 为什么模型中要写belongsTo、hasMany这些玩意呢?

public function user()
{
   return $this->belongsTo(User::class);
}
繁华开满天机
浏览 417回答 2
2回答

精慕HU

使用模型和模型关系的好处是: 一旦定义好关系,随处可用。假如数据库命名不规范,去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模型use AppModelsData;还不如DB::table('data')->where('uid',$uid)->get()一句话完事了呢 不能只考虑眼前的控制器,假如还有个order,存了个user_id,要输出user_name,定义好关系的话直接$order->user->user_name即可;假如还有个用户地址、用户优惠、用户xxx各种,每次join不觉得麻烦嘛。。
随时随地看视频慕课网APP
我要回答