2013-12-26 4 views
1

Я использовал функцию массового присвоения рамки Laravel 4.1, и проблема начала появляться, когда я решил сделать мои контроллеры более гибкими, добавив репозитории. При использовании этого шаблона я не совсем понимаю, как реализовать стандартные красноречивые методы, как fill() и save()Массовое присвоение Laravel в репозитории

Это мой репозиторий кода:

class EloquentUserRepository implements UserRepository 
{ 
    public function paginate($perPage = 15, $order = 'ASC', $orderBy = 'id') 
    { 
     return User::orderBy($orderBy, $order)->paginate($perPage); 
    } 

    public function getInstance() 
    { 
     return new User; 
    } 

    public function findAll() 
    { 
     return User::all(); 
    } 

    public function find($id) 
    { 
     return User::find($id); 
    } 

    public function fill(array $data) 
    { 

    } 

    public function update(array $data) 
    {} 

    public function save() 
    {} 

    public function create(array $data) 
    { 
     return User::create($data); 
    } 

    public function delete($id) 
    { 
     $user = User::find($id); 
     if ($user) 
     { 
      return $user->delete(); 
     } 
     return false; 
    } 
} 

ли кто-нибудь сделал что-то подобное? Спасибо.

+0

Я думаю, что «заполняемый» может использоваться только в модели. – Anam

+0

Я не хочу изобретать колесо, я хочу вызвать метод заполнения объекта, который доступен в моей модели. –

ответ

0

Возможно, это не роль класса «репозиторий». Посмотрите на смысл репозитория: «место, где вещи хранятся и могут быть найдены». Я думаю, вам нужно найти другой образец.

Вы можете использовать своего рода процедурные методы:

UserSaver::fill($user, $arrayOfAttributes); 
UserSaver::save($user); 

Или построить класс на вершине своего класса пользователя:

$abstractUser = new AbstractUser($user); 
$abstractUser->fill($arrayOfAttributes); 
$abstractUser->save(); 

И я уверен, что другие существуют (возможно, лучше) модели ,

Я не большой поклонник всех этих шаблонов, потому что я думаю, что Eloquent уже является хорошим слоем абстракции (или, может быть, потому, что мои проекты слишком малы). Если я хочу изменить реализацию all() или save(), я переопределяю их в определенной модели или в своем классе BaseModel, который наследует все остальные. Я также использую такие события, как saving и много query scopes. Тогда мои модели и уровни контроллера очень слабо связаны.

+0

Области выглядят как то, что я ищу, попробую и вернусь :) –

+0

кажется, что на самом деле нет способа реализовать это. –

Смежные вопросы