Laravel将属性添加到_构造函数中的模型

Laravel将属性添加到_构造函数中的模型,laravel,Laravel,我正在尝试向我的模型添加一个属性,这样我可以说:$model->path,然后返回一个url。因此,我在模型的构造函数中添加了以下内容: public function __construct($attributes = array()){ $this->path = url('img/' . $this->{'file-name'}); parent::__construct($attributes); } 但如果我运行Model::first(),则会得到以

我正在尝试向我的模型添加一个属性,这样我可以说:
$model->path
,然后返回一个url。因此,我在模型的构造函数中添加了以下内容:

public function __construct($attributes = array()){

    $this->path = url('img/' . $this->{'file-name'});
    parent::__construct($attributes);

}
但如果我运行
Model::first()
,则会得到以下结果:

{
  id: 25,
  text: "A lovely file",
  file-name: "file.jpg",
  created_at: "2016-02-12 11:44:37",
  updated_at: "2016-02-12 11:44:37"
},
您会注意到没有
路径
属性。我做错什么了吗?!我想看看:

{
  id: 25,
  text: "A lovely file",
  file-name: "file.jpg",
  path: "http://myapp.app:8000/img/file.jpg",
  created_at: "2016-02-12 11:44:37",
  updated_at: "2016-02-12 11:44:37"
},
为了记录,我还尝试了
$this->field='value'也没有创建属性。

请阅读。你最好还是用一把枪

您也不应该在列/属性名中使用破折号,请使用下划线作为分隔符的约定。

阅读。你最好还是用一把枪


您也不应该在列/属性名称中使用破折号,请使用下划线作为分隔符。

如果模型或表上不存在
路径
属性,则还需要
$appends
属性。隐藏于:太好了,谢谢-并在连字符上注明。是否有任何方法可以自动包含此属性,或者我最好执行以下操作:
$imgs=\App\Img::all();foreach($imgs作为$img){$img->url=$img->path;
–这样我为API返回的集合的格式就很好了?@Djave正如@Mysteryos所说的,你可以将
path
添加到你的
$appends
数组中,这将在任何序列化为JSON、数组等的过程中包括该值。如果
path
属性te不存在于模型或表中。隐藏于:太好了,谢谢–并在连字符上注明。是否有任何方法自动包含此属性,或者我最好执行以下操作:
$imgs=\App\Img::all();foreach($imgs as$Img){$img->url=$img->path;
–这样我返回的API集合的格式就很好了?@Djave正如@Mysteryos所说的,你可以将
path
添加到你的
$appends
数组中,这将包括任何序列化为JSON、数组等的值。
public function getPathAttribute()
{
    return url('img/'.$this->file_name);
}