尝试在构造函数

时间:2016-12-30 16:48:55

标签: php laravel laravel-5 eloquent laravel-5.3

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时,它返回空,实际上User对象返回空

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
 }

这是我转储变量时返回的用户对象。 我已经搜索了这个,我什么也没找到,我经历了几次文件,并没有发现任何关于。 因此,非常感谢任何对此的帮助:)

1 个答案:

答案 0 :(得分:1)

如果您只想向用户模型添加两个属性,可以使用Accessors,如下所示:

public function getTracksSystemDirAttribute()
{
    return public_path() . '/users/' . $this->reference . '/tracks/';
}

然后你可以说:

$user = User::find(1);
$user->tracks_system_dir;

对于任何其他财产也可以这样做。

请注意,您应该按照示例中的命名进行操作。更多关于laravel文档的内容:Accessors