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

Laravel:如果有任何函数是在模型类中编写的……并且如果我们通过

Laravel:如果有任何函数是在模型类中编写的……并且如果我们通过

PHP
精慕HU 2021-05-03 17:23:01
我正在使用Laravel 5。如果我已经在Model类上编写了一个函数,并通过laravel将其对象雄辩地指向了诸如cars.blade.phpfile之类的任何视图文件,现在如果我从cars.blade.php像模特班Car.phppublic function totalModels() {     return App\Models\CarModel::where('id',$this->modelId)->count();     }Cars.blade.php<span>Available Models : {{ $car->totalModels() }}</span>所以我的问题是什么时候该函数会调用?此功能会使页面变慢吗?这是最佳做法吗?如果有任何foreach循环,那么此函数将如何作用于每个对象?
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

这是最佳做法吗? 您正在将MVC体系结构的VIEW部分耦合到Model本身,这不是一个好习惯。


什么时候该函数会调用?:这将在laravel模板引擎渲染该刀片后立即运行。


将会发生什么: 它将对数据库进行一次额外的调用以获取所有行,然后执行collection count()比mysql慢得多的a count()。


此功能会使页面变慢吗?是的。至少可以稍微提高查询性能:


App\Models\CarModel::select(DB::raw('count(*) as total_cars'))

->where('id',$this->modelId)

->pluck('total_cars');

该查询类似于withCount()通过关系对方法进行的查询。


如果有任何foreach循环,那么此函数将如何作用于每个对象? 如果您要传给对象并进行调用以获取计数,则为传给每个对象额外的对数据库的调用将类似于N + 1问题


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 145 浏览

添加回答

举报

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