# Save manytomany with additional field

**URL:** <https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085>\
**Category:** Uncategorized\
**Created:** [March 8, 2021, 3:05pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085 "2021-03-08T15:05:47Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dirk](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/dirk/32/2174_2.png) [@dirk](https://discourse.cakephp.org/u/dirk)\
**Post date:** [March 8, 2021, 3:05pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/1 "2021-03-08T15:05:47Z")

</div>

Simplified i have 3 Tables:

- dishes (id, name, created, modified)
- dishsizes (id, name, created, modified)
- dishes\_dishsizes (id, dish\_id, dishsize\_id, unitprice)

Table dishsizes is filled with values.

What i want to do is to add a new dish and define in which dishsizes one can order the dish and what the unitprice per dishsize is.

In my Form “add” i tried the following:

> ```
> foreach($dishsizes AS $dishsize) {
> //debug($dishsize);
> echo $this->Form->control('dishsizes['.$dishsize->id.'].unitprice', ['label'=>$dishsize->name,'type'=>'number','min'=>1, 'step'=>'any']);
> }
> 
> ```

But it seems not to be the right way.  
By doing so, after patching in the controller it tries to create new dishsizes.

Can anyone help me?

Best regards  
Dirk

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [March 8, 2021, 4:09pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/2 "2021-03-08T16:09:40Z")

</div>

Do you have existing records in the database for this? If so, read one of those dish records with dishsizes contained, a dump that entity. The naming scheme in your view should match the way that the data exists in the entity you’re trying to patch it into.

---

<div class="post-metadata">

**Author:** ![dirk](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/dirk/32/2174_2.png) [@dirk](https://discourse.cakephp.org/u/dirk)\
**Post date:** [March 8, 2021, 4:49pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/3 "2021-03-08T16:49:25Z")

</div>

Thank you very much.  
you helped me on the way.

my working solution:

> ```
> $i=0;
> foreach($dishsizes AS $dishsize) {
> echo $this->Form->hidden('dishsizes.'.$i.'.id', ['value' => $dishsize->id]);
> echo $this->Form->control('dishsizes.'.$i.'._joinData.unitprice',['label'=>__('Unitprice for '.$dishsize->name)]);
> $i++;
> }
> 
> ```

btw, do you know a better approach for the loop ($i=0,…$i++)

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [March 8, 2021, 5:39pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/4 "2021-03-08T17:39:16Z")

</div>

`foreach ($dishsizes as $i => $dishsize)` ?

---

<div class="post-metadata">

**Author:** ![dirk](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/dirk/32/2174_2.png) [@dirk](https://discourse.cakephp.org/u/dirk)\
**Post date:** [March 8, 2021, 5:54pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/5 "2021-03-08T17:54:02Z")

</div>

Thanks again for your help.  
As you can see, i´m not really good in PHP ☹

---

<div class="post-metadata">

**Author:** ![jarekgol](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@jarekgol](https://discourse.cakephp.org/u/jarekgol)\
**Post date:** [March 10, 2021, 11:46pm UTC](https://discourse.cakephp.org/t/save-manytomany-with-additional-field/9085/6 "2021-03-10T23:46:52Z")

</div>

PHP double quote magic:  
`echo $this->Form->hidden("dishsizes.$i.id");`  
Cheers!
