尝试在构造函数中设置 class 属性时,用户对象 returns 为空
User Object returns empty when trying to set class properties in constructor
public $tracksSystemDir;
public $contentSystemDir;
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
// setup system directory paths
$this->tracksSystemDir = public_path() . '/users/' . $this->reference . '/tracks/';
$this->contentSystemDir = public_path() . '/users/' . $this->reference . '/content/';
}
当我尝试用户 $this->tracksSystemDir 时,它 returns 是空的,实际上用户对象 returns 是空的
User {#420 ▼
#guarded: array:1 [▶]
#dates: array:1 [▶]
#hidden: array:2 [▶]
+tracksSystemDir: "/home/vagrant/Code/9mmradio/public/storage/users//tracks/"
+contentSystemDir: "/home/vagrant/Code/9mmradio/public/storage/users//content/"
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []
#original: []
#relations: []
#visible: []
#appends: []
#fillable: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
+exists: false
+wasRecentlyCreated: false
#forceDeleting: false
}
这是我转储变量时返回的用户对象。
我用谷歌搜索了这个,但一无所获,我浏览了几次文档,也没有发现任何相关内容。
因此,非常感谢您对此的任何帮助:)
如果您只想向用户模型添加两个属性,您可以使用 Accessors
,如下所示:
public function getTracksSystemDirAttribute()
{
return public_path() . '/users/' . $this->reference . '/tracks/';
}
然后你可以通过说:
来使用它
$user = User::find(1);
$user->tracks_system_dir;
同样可以对任何其他 属性。
请注意,您应该遵循示例中的命名。 laravel 文档中有更多相关信息:Accessors
public $tracksSystemDir;
public $contentSystemDir;
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
// setup system directory paths
$this->tracksSystemDir = public_path() . '/users/' . $this->reference . '/tracks/';
$this->contentSystemDir = public_path() . '/users/' . $this->reference . '/content/';
}
当我尝试用户 $this->tracksSystemDir 时,它 returns 是空的,实际上用户对象 returns 是空的
User {#420 ▼
#guarded: array:1 [▶]
#dates: array:1 [▶]
#hidden: array:2 [▶]
+tracksSystemDir: "/home/vagrant/Code/9mmradio/public/storage/users//tracks/"
+contentSystemDir: "/home/vagrant/Code/9mmradio/public/storage/users//content/"
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []
#original: []
#relations: []
#visible: []
#appends: []
#fillable: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
+exists: false
+wasRecentlyCreated: false
#forceDeleting: false
}
这是我转储变量时返回的用户对象。 我用谷歌搜索了这个,但一无所获,我浏览了几次文档,也没有发现任何相关内容。 因此,非常感谢您对此的任何帮助:)
如果您只想向用户模型添加两个属性,您可以使用 Accessors
,如下所示:
public function getTracksSystemDirAttribute()
{
return public_path() . '/users/' . $this->reference . '/tracks/';
}
然后你可以通过说:
来使用它$user = User::find(1);
$user->tracks_system_dir;
同样可以对任何其他 属性。
请注意,您应该遵循示例中的命名。 laravel 文档中有更多相关信息:Accessors