I have quite exactly the same database for my recipes application.
I just have a little difference : a products table with all products and an ingredients table for the ingredients with product_id.
The equivalent for your database is ingredients and ingredient_recipe.
Here is what I have done, but adapted to your database.
In the Recipe model.
public function user()
{
return $this->belongsTo(User::class);
}
public function ingredients()
{
return $this->hasMany(Ingredient::class, 'ingredient_recipe'));
}
In the Ingredient model.
protected $table = 'ingredient_recipe';
public function unit()
{
return $this->belongsTo(Unit::class);
}
Then in your controller.
$recipes = Recipe::with('user', 'ingredients.unit')->get();
And in the view.
<ul>
@foreach ($recipes as $recipe)
<li>
<div>{{ $recipe->user->name }}</div>
<ul>
@foreach ($recipe->ingredients as $ingredient)
<li>{{ $ingredient->name }} ({{ $ingredient->quantity }} {{ $ingredient->unit->name }})</li>
@endforeach
</ul>
</li>
@endforeach
</ul>