嗨,朋友们,我正在使用“空间/拉维分形”软件包。
实际上,我无法理解这是一个问题还是分形的工作方式,但当我在另一个中包含分形变换时,我会对第一个变换的每个结果进行新的查询。换句话说,如果我列出“Shift”并在with()方法中传递“Jobs”,那么对于每个“Shift”,我都会有一个查询来获取作业。
ShiftController(这里的方法)
public function list(Request $request)
{
$shiftData = Shift::with(['job'])
->withCount('job_applications')->active()
->orderBy('start_date_time', 'asc')->get();
$resource = new Collection($shiftData, new ShiftTransformer());
$array = $this->fractal->createData($resource)->toArray();
$array['count'] = count($array['data']);
return $this->respondWithCode($array, Illuminate::HTTP_OK);
}
移相变压器
class ShiftTransformer extends TransformerAbstract
{
protected $availableIncludes = [
'roles', 'notifications', 'permissions'
];
public function transform(shift $shift)
{
$job_sub_title = is_null($shift->job_sub_title) ? $shift->job->title : $shift->job->title . ' - ' . $shift->job_sub_title;
return [
'id' => (string)$shift->id,
'title' => $job_sub_title,
];
}
}
班次表与作业表的关系
移位模型
public function job()
{
return $this->belongsToMany('App\Models\Job', 'job_shift', 'shift_id', 'job_id');
}
工作模式
public function shifts()
{
return $this->belongsToMany('App\Models\Shift', 'job_shift');
}
多重查询
为什么我得到很多查询,如下面,因为在变压器类我没有执行任何查询
选择转移
.,(从job_applications
在转移
的地方选择Count(). id=job_applications
.shift_id
和job_applications
.deleted_at
为空)as>job_applications_count
从转移
存在的地方(选择*from作业
内连接job_shift
on作业
. id=job_shift
.job_id
在转移
.id
=job_shift
.shift_id
和is_active
=1和作业
.deleted_at
为空)并且存在(选择*from作业
内连接job_shift
id=job_shift
。job_id
其中转移
。id
=job_shift
。shift_id
并且存在(从客户端
中选择*>其中作业
。client_id
=客户端
。id
和id
在(6,3)和客户端
中。deleted_at
为空)和作业
。>deleted_at
为空)max_staffs!=approved_staffs和移位
。deleted_at
是null顺序由start_date_time
asc[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
在(6, 7, 8, 9, 26, 29, 30, 31, 32, 33, 34, 35, 51, 52, 53, 54, 55, 56, 57, 64, 247, 251, 255, 256, 257, 258, 259, 263, 264, 266, 267, 354, 369, 380, 381, 382, 383, 453, 454, 455, 456, 457, 466, 468, 474, 479, 536, 540)和作业
。deleted_at
为空[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=64和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=31和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=32和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=35和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=57和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=53和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=34和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=56和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=54和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=55和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=33和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=52和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=251和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=266和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>移位id=264和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=267和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=257和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=258和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=255和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=256和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=263和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=259和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=354和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=382和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=383和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=380和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=369和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=455和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=456和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=51和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=247和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=381和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=466和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=468和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=479和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=474和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=26和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=30和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=29和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=9和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=454和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=457和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=453和作业
<代码>已删除\u在处为空限制1[]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>轮班id=536和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=540和作业
。deleted_at
为空限制1[][]
选择作业*<代码>作业\u班次<代码>轮班id作为<代码>轴心轮班id,作业轮班
<代码>作业id作为透视作业id
来自作业
内部联接作业移位
打开作业
<代码>id=作业\u班次
<代码>作业id其中作业轮班
<代码>班次id=7和作业
<代码>已删除\u在处为空限制1[]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=6和作业
。deleted_at
为空限制1[][]
选择作业
。*,job_shift
。shift_id
作为pivot_shift_id
,job_shift
。job_id
作为pivot_job_id
从作业
内连接job_shift
id
=job_shift
。job_id
其中job_shift
。shift_id
=8和作业
。deleted_at
为空限制1[][]
我也面临同样的问题。以下链接可能会帮助您使用Laravel collection helper以更好的方式解决此问题。
https://laravel.com/docs/8.x/collections#method-拔
这可能不是合适的解决方案,但请尝试在AppServiceProvider的引导函数中添加Model::preventlazyloading()