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);
}