Laravel:如何创建依赖于多个模型的资源

时间:2018-09-11 09:34:12

标签: php json laravel-5

我需要创建一个应该从多个模型收集信息的资源。

此刻,我正在创建常规资源:

$movieResource = new MovieResource($movie);

MovieResource::toArray()内:

public function toArray($request)
{
    $this->initRepos(); // initializing used repositories as static fields

    $movieData = [ // transforming model to resource
        'title' => $this->title,
    ];

    $this->attachSounds($movieData); // Uses two unrelated tables
    $this->attachUrl($movieData);    // Uses one unrelated table
    $this->attachAnotherInfo($movieData); // Uses one unrelated table

    return $movieData;
}

MovieResource类用于项目中的几个不同位置。为了不重复逻辑,我决定在资源内部注入存储库。

在某些地方MovieResource被广泛使用,这就是为什么将使用的存储库初始化为MovieResource类的静态属性(以避免多个实例初始化)的原因

但是,这种结构有一些局限性:测试几乎是不可能的,因为不能模拟静态方法。资源类应该尽可能简单,但是现在它已重载。

我知道当前的解决方案远非理想,这就是为什么我要向您寻求有关如何增强当前解决方案的帮助,建议或经验。

0 个答案:

没有答案