重构我在Laravel 5中实现存储库的代码

时间:2016-06-25 04:23:44

标签: php laravel repository-pattern

我在实施存储库的Laravel应用中重构了与我的用户模型相关的所有数据库访问。

所以,现在,我的所有数据库访问(我使用Eloquent)都通过我的UserRepository。

但我的模型用户中仍然有一些雄辩的操作:

class User extends Model{
....
public static function boot()
{
    parent::boot();
    static::creating(function ($user) {
        $softDeletedUser = User::onlyTrashed()->where('email', '=', $user->email)->first();
        if ($softDeletedUser != null) {
            $softDeletedUser->restore();
            return false;
        } else {
            $user->token = str_random(30);
            if ($user->country_id == 0) {
                $user->addGeoData();
            }


        }
        return true;
    });

我不知道该怎么办,因为:

  1. 关于我的用户模型,而不是我的控制器
  2. 这是一种静态方法,所以我不知道如何传递$ this(使用)
  3. 我猜这有什么问题....
  4. 那么......在这种情况下我该怎么做?

1 个答案:

答案 0 :(得分:0)

我不认为您确实需要将该查询移到存储库中,但由您决定。如果确实需要重用该代码,请将查询添加到存储库类并使用它。在2个地方使用相同的查询并不是什么大不了的事,但如果你有2个以上的地方可能会成为一个问题。