I have an Eloquent Model called Surface which is dependent on a ZipCodeRepository object:
class Surface extends Model{
public function __construct(ZipCodeRepositoryInterface $zipCode){...}
and an Address object that hasMany surfaces.
class Address extends Model{
public surfaces() { return $this->hasMany('App/Surface'); }
}
My issue is when I call $address->surfaces
I get the following error:
Argument 1 passed to App\Surface::__construct() must be an instance of App\Repositories\ZipCodeRepositoryInterface, none given
I thought the IoC would automatically inject that.
Thanks to @svmm for referencing the question mentioned in the comments. I found that you cannot use dependency injection on Models because you would have to change the signature on the constructor which doesn't work with the Eloquent framework.
What I did as an intermediate step, while refactoring the code, is use
App::make
in the constructor to create the object, such as:That way the IoC will still grab the implemented repository. I am only doing this until I can pull the functions into the repository to remove the dependency.