簡體   English   中英

Laravel真正的倉庫模式

[英]Laravel real repository pattern

我正在Laravel中實現存儲庫模式,並且對實現有疑問。

例如,我可以讓UserRepository類有其遵循的方法Eloquent標准:

public function create(array $properties)
{
    return $this->entity->create($properties);
}

public function update($id, array $properties)
{
    return $this->find($id)->update($properties);
}

public function delete($id)
{
    return $this->find($id)->delete();
}

然后將那個存儲庫注入到我需要與用戶做任何事情的地方。

我在這里看到的問題是...例如,當我這樣做時,后面會發生什么:

$this->userRepository->authenticatedUser()->posts

如果通過Eloquent調用posts關系,這是否違反了具有存儲庫模式的條件?

那么,擁有“真實的”存儲庫模式是否意味着要處理通過User模型加載的所有可能的關系?

保持干燥。 在這里,您只需復制Eloquent已經提供的許多代碼。

但是,如果調用更加復雜並且您不想在整個代碼庫中重復邏輯,則可以使用RepositoryPattern。

public function clientContact($clientId) {
     return \Auth::user()->manager()->superBoss()->company()->clients()->where('client_id', $clientID)->primaryContact()->firstOrFail();
}

在這種情況下,這是有道理的。

但是,如果您希望獲得經過身份驗證的用戶的帖子,則只需建立雄辯的關系即可。

$posts = \Auth::user()->posts()->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM