一个关于队列的细节问题求助
1. 运行环境
linux
1). 当前使用的 Laravel 版本?
laravel8
2). 当前使用的 php/php-fpm 版本?
PHP 版本: 7.4
2. 问题描述?
$models = OrderReview::with(['order_goods'=>function($query){
$query->where('del',0)->select();
},'user_img_wed'=>function($query){
$query->whereNull('deleted_at')->select()->groupBy('factory_url');
},'order_syn'=>function($query){
$query->select(['id','shop_id','order_id','order_ate','taobao_id']);
}])->whereHas('order_syn',function (Builder $query) use ($v){
$query->where('shop_id',$v);
})->withCount('user_img_wed')->where('review_type',2)->where('version',2)->where('order_review.created_at', '<', Carbon::now())->get();
上述代码会得到一个model。里面的关系因为where导致某些不满足的数据不会被查询。
但是进入队列的时候关系又被重载了。导致一些不要的数据又出来了
在任务处理时,Eloquent 模型及其加载的关系将被优雅地序列化和非序列化。如果你的队列任务在其构造函数中接受一个 Eloquent 模型,那么只有模型的标识符才会被序列化到队列中。当实际处理任务时,队列系统将自动重新从数据库中获取完整的模型实例及其加载的关系。它对你的应用程序来说是完全透明的,并且可以防止在序列化完整的 Eloquent 模型实例时可能出现的问题。
文档有这样一句话。
请问有没有什么办法让队列执行的时候不重新加载关系呢?
删掉 job 里的
use SerializesModels;