php - 在构造函数中分配的 Laravel 作业新属性未在句柄方法中显示
问题描述
在 Laravel 作业类中,其代码如下所示。如果满足条件,我想为我的对象分配一个属性(不保留 db 上的列)。问题是我在构造函数之外看不到该属性。请问我做错了什么?
class SomeJob implements ShouldQueue
{
private $length;
private $width;
private $area;
public function __construct()
{
$areas = Area::where('length', $this->length)->get()->each(function($area) {
if($area->length === 300) {
$area->reserve = ($area->length + 400);
}
});
$this->area = $areas;
// *log has $area->reserve*
}
public function handle()
{
$area = $this->area;
logger($area);
// *log does not have $area->reserve*
}
}
解决方案
您需要在__construct()
函数之外定义属性。__construct()
目前,这些变量的范围仅限于在闭包中可用。
class SomeJob implements ShouldQueue
{
protected $length;
protected $width;
protected $area;
public function __construct()
{
//...
推荐阅读
- javascript - jQuery:执行同步 AJAX 请求,然后执行一系列其他 ajax 请求
- python - 如何使用python自动重命名txt文件
- reactjs - 如何防止扩展的 React-Table 行在重新渲染时折叠?
- thymeleaf - 将完整的当前 URL 链接到 thymeleaf 视图中
- java - 如果枚举类是私有的,如何在枚举类中调用构造函数?为什么会打印 3 次?
- python - 结合两列在 pd Dataframe 中生成索引
- asp.net-core - 如何安全地生成外部链接?
- android - 无法在微信上分享
- arrays - 在功能组件中映射数组
- python - Django - 文件字段未显示所选文件名