Laravel在保存前生成鼻涕虫你有两种方式:在每种情况下,您都必须在类声明之前添加以下代码:
我试图在这个wondefull网站的帮助下学习laravel 5。对于我的活动模型,我想在将一个 slug 保存到数据库之前生成一个 slug,因此我创建了以下模型。
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Activity extends Model {
protected $table = 'activitys';
protected $fillable = [
'title',
'text',
'subtitle'
];
// Here I want to auto generate slug based on the title
public function setSlugAttribute(){
$this->attributes['slug'] = str_slug($this->title , "-");
}
//
}
但是当我在活动模型slug未填充的帮助下保存对象时,我尝试将其更改为$this->attributes['title'] = “test”进行测试,但它没有运行。另外,我尝试$title添加参数,$slug设置SlugAttribute(),但它没有帮助。
我做错了什么,有人可以解释一些例子中使用的参数,用于setSomeAttribute($whyParameterHere)。
注意:我的数据库中有一个 slug 字段。
正如user3158900所建议的那样,我试过了:
public function setTitleAttribute($title){
$this->title = $title;
$this->attributes['slug'] = str_slug($this->title , "-");
}
//
这使我的标题字段为空,但以我想要的方式保存了数据域,为什么$this>标题为空?如果我删除$this->标题= $title;标题和辅助信息都是空的