加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel在保存前生成slu ..

发布时间:2020-12-14 19:50:02 所属栏目:大数据 来源:网络整理
导读:我试图在 this wondefull website的帮助下学习laravel 5. 对于我的活动模型,我想在将一个保存到我的数据库之前生成slug,因此我创建了以下模型. ?php namespace App;use IlluminateDatabaseEloquentModel;class Activity extends Model { protected $table
我试图在 this wondefull website的帮助下学习laravel 5.
对于我的活动模型,我想在将一个保存到我的数据库之前生成slug,因此我创建了以下模型.
<?php namespace App;

use IlluminateDatabaseEloquentModel;

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添加到setSlugAttribute()但它没有帮助.

我做错了什么,有人可以解释setSomeAttribute($whyParameterHere)的一些示例中使用的参数.

注意:我的数据库中有一个slug字段.

正如user3158900所建议的,我尝试过:

public function setTitleAttribute($title){
    $this->title = $title;
    $this->attributes['slug'] = str_slug($this->title,"-");
}
//

这使我的标题字段为空,但以我想要的方式保存了slug,为什么$this->标题为空?
如果我删除$this-> title = $title;标题和slug都是空的

我相信这不起作用,因为你没有尝试设置一个slug属性,所以函数永远不会被击中.

我建议在你的setTitleAttribute()函数中设置$this-> attributes [‘slug’] = …,这样每当你设置一个标题时它就会运行.

否则,另一种解决方案是为您的模型创建一个保存事件,并将其设置在那里.

编辑:根据评论,还有必要在这个函数中实际设置title属性…

public function setTitleAttribute($value)
{
    $this->attributes['title'] = $value;
    $this->attributes['slug'] = str_slug($value);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读