Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon How do I resolve the "Call to a member function add() on null" error when injecting a repository in Laravel 11
    Laravel Service Provider


How do I resolve the "Call to a member function add() on null" error when injecting a repository in Laravel 11


To resolve the "Call to a member function add() on null" error when injecting a repository in Laravel 11, you can try the following:

1. Check if the repository is properly bound in the service container. In your `AppServiceProvider`, make sure you have bound the repository interface to the concrete implementation:

php
public function register()
{
    $this->app->bind(
        UserRepositoryInterface::class,
        UserRepository::class
    );
}

2. Ensure that the repository is being injected correctly in your controller's constructor. The type-hinted parameter should match the bound repository interface:

php
class UserController extends Controller
{
    private $userRepository;

    public function __construct(UserRepositoryInterface $userRepository)
    {
        $this->userRepository = $userRepository;
    }
}

3. Verify that the repository methods are being called correctly. Double-check that you are not trying to call a method on a null object. For example, if you are trying to add a user, make sure the `create()` method is being called on a non-null repository instance:

php
$user = $this->userRepository->create($request->all());

4. If the error persists, check if there are any other dependencies being injected in the controller or repository that might be null. Ensure that all required dependencies are properly set up and not null.

5. As a last resort, you can try using the `dd()` function to dump and die the repository instance to see if it's being properly injected:

php
public function __construct(UserRepositoryInterface $userRepository)
{
    dd($userRepository);
    $this->userRepository = $userRepository;
}

If the repository instance is null, it means there's an issue with the binding or the dependency injection setup. Double-check your code and make sure the repository interface and implementation are correctly defined and bound in the service container.

Citations:
[1] https://stackoverflow.com/questions/54260518/laravel-call-to-member-function-on-null
[2] https://laracasts.com/discuss/channels/laravel/problem-with-testing-in-laravel-sail
[3] https://laracasts.com/discuss/channels/laravel/call-to-a-member-function-connection-on-null
[4] https://github.com/barryvdh/laravel-ide-helper/issues/1084
[5] https://laraveldaily.com/post/laravel-relation-attempt-to-read-property-on-null-error