方法setAuthorIdAttribute未被调用

时间:2017-04-21 13:30:35

标签: php laravel laravel-5

我有一个Post模型,其中setAuthorIdAttribute方法用于设置发布作者ID以及已登录用户的ID。

class Post extends Model
{
    protected $fillable = ['title', 'subtitle', 'slug', 'content', 'draft', 'author_id', 'category_id'];

    /**
     * An post belongs to an author
     */
    public function author()
    {
        return $this->belongsTo('App\User');
    }

    // Some code here...

    /**
     * Add the author of the post
     */
    public function setAuthorIdAttribute($value)
    {
        return $this->attributes['author_id'] = Auth::id();
    }
}

我用这个创建我的Post

public function store(Request $request)
{
    $post = Post::create($request->all());
    return redirect()->route('posts.show', ["post" => $post]);
}

当我在dd()内放置setAuthorIdAttribute时,没有任何事情发生。为什么?

1 个答案:

答案 0 :(得分:2)

您可以使用模型引导方法在模型中设置属性值,如:

public function boot()
{
    Model::creating(function ($model)
        return $model->attributes['author_id'] = Auth::id();

    });
    Model::updating(function ($model)
        return $model->attributes['author_id'] = Auth::id();
    });
}

这将在此模型的每次创建和更新事件中使用author_id填充Auth::id()属性。