有没有办法可以构建一个查询,它不仅会返回模型/表上的现有实体,还会创建根据函数/查询填充的新变量。全部在一个查询中完成。
就像这样的伪代码。
Job::whereDate('created_at', '>=', $pdate)
->with('address')
->with('Employees'->count() as newprop);
基本上我想获得作业,地址并在集合中返回的对象上创建一个新属性,该属性将保存每个作业的员工数。 解决这个问题的最佳方式是什么?也许我应该在Job模型上创建一个返回Employees计数的新函数/属性?这是否意味着应用程序将进行更多的数据库查询,或者在我使用eloquent获取任何Job对象时是否会填充此类属性?
答案 0 :(得分:1)
如果要将其添加到所有作业模型实例:
public function getNewpropAttribute($value) {
return count($employees);
}
这样你就可以调用Job::find($id)->newprop;
并执行该功能。这里描述了https://laravel.com/docs/master/eloquent-mutators#accessors-and-mutators