如何将带有构造函数的类注入到 Laravel 资源类中

asp*_*ile 5 php resources laravel

资源 Laravel 中出现错误“App\Http\Resources\OrderResource::__construct():参数 #2 ($orderLogRepository) 必须是 App\Interfaces\OrderLogRepositoryInterface 类型,给定 int,在 /var/www/vendor/laravel/ 中调用Framework/src/Illuminate/Collections/Traits/EnumeratesValues.php 第 355 行”

我将一个带有构造函数的类注入到 OrderResource.php 文件中。但它给出了之前的错误!我没有找到任何这方面的线索。

class OrderResource extends JsonResource
{
    public $orderLogRepository;

    public function __construct($resource, OrderLogRepositoryInterface $orderLogRepository)
    {
        $this->orderLogRepository = $orderLogRepository;
        parent::__construct($resource);
    }
}
Run Code Online (Sandbox Code Playgroud)

用集合来调用它resourceOrderResource::collection($orders);

小智 1

你必须做这样的事情。

我们无法通过构造函数调用接口。所以我们需要尝试不同的方法。

第一个待办事项: 'is_cart' => \App::make('App\Interfaces\Cart\CartInterfaces')->checkProductIDInCart($this->id),

以我为例:

 public function toArray($request)
{
    
    return [
        'id' => $this->id,
        'encrypt_id'   => \Crypt::encrypt($this->id), 
        'is_cart' => \App::make('App\Interfaces\Cart\CartInterfaces')->checkProductIDInCart($this->id),
    ];
}
Run Code Online (Sandbox Code Playgroud)