How to add multiple conditions on Laravel elequent relationship

Solution:

You have to constrain your eager loads, using an array as the parameter for with(), using the relationship name as the key, and a closure as the value:

$data = A::with([
    'b' => function ($query) {
        $query->where('year', '=', '2016');
    },
])->find(1)->toArray();

The closure automatically gets injected an instance of the Query Builder, which allows you to filter your eager loaded model.

The corresponding section in the official documentation: https://laravel.com/docs/5.4/eloquent-relationships#constraining-eager-loads