<p>Here's how I'd do it...</p>

<ol>
<li><p>Create a channel called Allergens with a custom field for the icon. If the icon is an image, make it an assets field.    </p></li>
<li><p>Create a channel called Ingredients with a custom field for the allergens. It will be of the Entries field-type and only allow the user to select Allergens entries.</p></li>
<li><p>Create a channel called Recipes with a custom field for the Ingredients and another custom field for the description of the dish. The Ingredients field will be of the Entries field-type and only allow the user to select Ingredients entries. The description field would probably be a simple Rich Text field.</p></li>
<li><p>Create a channel called Menu. If there is only one menu needed, I'd probably make it a Single. If more are needed, make it a standard channel. It'll need a custom field for the Recipes, which would be an Entries field where the user can only select Recipe entries.</p></li>
</ol>

<p>There are other ways of doing it, but this would probably give you the most flexibility in the long run, and keep things simple for the users.</p>

CC BY-SA 3.0
2017-02-20T10:16:34.080Z
I see, that's actually what I thought I'd have to do. Basically channels with entries referring to each other.
Kenny Bones
CC BY-SA 3.0
2017-02-20T10:18:24.730Z
Yep. Sounds like you were already there.
Clive Portman
CC BY-SA 3.0
2017-02-20T10:10:46.657Z
2017-02-20T10:10:46.657Z
Clive Portman
<p>I'm building a website for a restaurant and I wanted to make the back-end as easy to use as possible. So I thought of a system like this.</p>

<ul>
<li>Allergens - Contains name and icon</li>
<li>Ingredients - Contains allergens</li>
<li>Recipes - Contains ingredients and text about the dish</li>
<li>Menu - Contains recipes</li>
</ul>

<p>So the concept is that they can just add as many recipes as they want. And just drag and drop/select the ingredients. And never ever worry about which allergens is present. </p>

<p>Thing is, I'm not sure what's the best way of achieving this. Would allergens, ingredients and recipes need to be separate entries in separate channels? Since I want to be able to attach an icon to an allergen, I guess that needs to be a channel?</p>

<entries><matrix><categories><tags>
Creating a smart restaurant menu
# Creating a smart restaurant menu

(Asked by: username_0 on 2017-02-19)

I'm building a website for a restaurant and I wanted to make the back-end as easy to use as possible. So I thought of a system like this.

* Allergens - Contains name and icon
* Ingredients - Contains allergens
* Recipes - Contains ingredients and text about the dish
* Menu - Contains recipes

So the concept is that they can just add as many recipes as they want. And just drag and drop/select the ingredients. And never ever worry about which allergens is present.

Thing is, I'm not sure what's the best way of achieving this. Would allergens, ingredients and recipes need to be separate entries in separate channels? Since I want to be able to attach an icon to an allergen, I guess that needs to be a channel?

**Tags:** entries, matrix, categories, tags

---

## 1 answers

### Answer by username_1 on 2017-02-20. Score: 2 | Accepted answer

Here's how I'd do it...

1. Create a channel called Allergens with a custom field for the icon. If the icon is an image, make it an assets field.
2. Create a channel called Ingredients with a custom field for the allergens. It will be of the Entries field-type and only allow the user to select Allergens entries.
3. Create a channel called Recipes with a custom field for the Ingredients and another custom field for the description of the dish. The Ingredients field will be of the Entries field-type and only allow the user to select Ingredients entries. The description field would probably be a simple Rich Text field.
4. Create a channel called Menu. If there is only one menu needed, I'd probably make it a Single. If more are needed, make it a standard channel. It'll need a custom field for the Recipes, which would be an Entries field where the user can only select Recipe entries.

There are other ways of doing it, but this would probably give you the most flexibility in the long run, and keep things simple for the users.

> **Comments:**
> **username_0**: I see, that's actually what I thought I'd have to do. Basically channels with entries referring to each other.  
> **username_1**: Yep. Sounds like you were already there.  

---

