Wondering if someone can help me take a closer look at this... i'm still not having any luck & can't really get much forward progress until i understand this.
If you need more information to determine suggestions, let me know. Any suggestions are appreciated. -joe On Tuesday, 30 December 2014 01:52:54 UTC-5, Joe T. wrote: > > i figured out part of my trouble, but the purpose of the original post > still remains. > > The parent record in Listings wasn't saving correctly because i didn't > have an `active` field in the form (*facepalm*). Corrected that. Still > having trouble with the date field, kinda frustrated there. But to the > point... > > When i save my data, i'm now getting a record in Listings. Yay! But the > associated data in ListingsAttrs is still not there. Boo! > > Current structure of ListingsAttrs POST data: > [listings_attrs] => Array ( > [4] => Array ( > [attr_id] => 4 > ) > [1] => Array ( > [attr_id] => 1 > [value] => Off-street > ) > ) > > Which now gives me this in the *$listing* Entity: > "listings_attrs": { > "4": { > "attr_id": "4" > }, > "1": { > "attr_id": "1", > "value": "Off-street" > } > } > > This is progress! The associated data wasn't in previous debug data. > > So what am i still missing that it won't save that data? Remember, `value` > is optional to the data record, it's controlled by the UI. So both of those > records *should be* valid. Why then is neither of them being saved? > > Any additional help here is appreciated. > -joe t. > > > On Monday, 22 December 2014 22:54:12 UTC-5, Joe T. wrote: >> >> Sorry this took several days to respond, i was sick all weekend, didn't >> get anywhere near my computer. >> >> i changed the names of the inputs from *listingsattrs* >> >> *listings_attrs* as you recommended (no clue how i missed that to begin >> with). My POST data now looks exactly as it did before, except for the name >> of that particular item. However, the log output for the $listing entity >> is still missing the associated ListingsAttrs data. >> >> The ListingsAttrs Entity didn't have a $_accessible array, so i added a >> default: >> $_accessible = [ >> '*' => true >> ]; >> >> The controller code looks like: >> $listing = $this->Listings->newEntity($this->request->data); >> >> /* i've also tried: >> $listing = $this->Listings->newEntity($this->request->data, >> ['associated' => ['ListingsAttrs']]); >> $listing = $this->Listings->newEntity($this->request->data, >> ['associated' => ['ItemAttrs']]); >> $listing = $this->Listings->newEntity($this->request->data, >> ['associated' => ['ListingsAttrs.ItemAttrs']]); >> $listing = $this->Listings->newEntity($this->request->data, >> ['associated' => ['ItemAttrs.ListingsAttrs']]); >> */ >> >> if ($this->Listings->save($listing)) { >> // etc. >> } >> else { >> throw new Exception... >> } >> >> What else can i try? i appreciate the help. >> -joe >> >> On Friday, 19 December 2014 11:29:12 UTC-5, José Lorenzo wrote: >>> >>> You should post a property called listings_attrs, check your entity >>> $_accessible array to make sure the property is also writable with request >>> data. >>> >>> On Friday, December 19, 2014 6:29:43 AM UTC+1, Joe T. wrote: >>>> >>>> i've seen a couple similar threads about this, but not my exact problem. >>>> >>>> i'm trying to follow the guide here: >>>> http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-request-data-into-entities >>>> >>>> and coming up short. *i'm not getting any errors* (except a date field >>>> that constantly fails if it has a value, separate issue)...so i have no >>>> idea what's happening to the data i submit, or why it isn't saved to the >>>> DB. >>>> >>>> My raw response data logged to Cake Debug is: >>>> >>>> Array ( >>>> [title] => '123 Main St' >>>> [street] => '123 Main St' >>>> [lot_no] => 1 >>>> [lat] => >>>> [lng] => >>>> [city] => 'Hometown' >>>> [county] => >>>> [state] => 'MI' >>>> [zip] => '49000' >>>> [area] => 900 >>>> [bedrooms] => 2 >>>> [bathrooms] => 1 >>>> [price] => 525 >>>> [ready_date] => >>>> [listingsattrs] => Array ( >>>> [4] => Array ( >>>> [id] => 4 >>>> ) >>>> [1] => Array ( >>>> [id] => 1 >>>> [value] => 'Off-street' >>>> ) >>>> ) >>>> [park_id] => 1 >>>> [house_condition_id] => 3 >>>> [house_style_id] => 2 >>>> [term_id] => 2 >>>> [info_body] => '<p>Live here. It's great!</p>' >>>> ) >>>> >>>> i have tables *Listings*, *ItemAttrs*, and *ListingsAttrs*. In >>>> *ListingsTable*, the relationship is defined as: >>>> $this->addAssociations([ >>>> 'belongsToMany' => [ >>>> 'ItemAttrs' => [ >>>> 'targetForeignKey' => 'attr_id', >>>> 'through' => 'ListingsAttrs', >>>> 'saveStrategy' => 'replace', >>>> ] >>>> ])' >>>> >>>> *Some* attributes are required to have a value when assigned to a >>>> Listing (or other parent object they can be assigned to with a similar >>>> relationship). When a requires-value attribute is selected for the (in >>>> this >>>> case) Listing, a text field is shown & marked as required. The value is >>>> stored in the *ListingsAttrs* record with the Listing ID and ItemAttr >>>> ID. >>>> >>>> When i submit the form, the correct attribute data is there. But it >>>> gets lost when i generate the Entity: >>>> >>>> $listing = $this->Listings->newEntity($this->request->data, [ >>>> 'associated' => ['ListingsAttrs'] >>>> ]); >>>> >>>> >>>> Log of *$listing*: >>>> { >>>> "title": "123 Main St", >>>> "street": "123 Main St", >>>> "lot_no": "1", >>>> "lat": null, >>>> "lng": null, >>>> "city": "Hometown", >>>> "county": null, >>>> "state": "MI", >>>> "zip": "49000", >>>> "area": 900, >>>> "bedrooms": 2, >>>> "bathrooms": 1, >>>> "price": 525, >>>> "ready_date": null, >>>> "park_id": 1, >>>> "house_condition_id": 3, >>>> "house_style_id": 2, >>>> "term_id": 2, >>>> "info_body": "<p>Live here. It's great!<\/p>\r\n" >>>> } >>>> >>>> i've tried creating the Listings entity without 'associated' at all, >>>> as 'associated' => 'ListingsAttrs', and 'associated' => 'ItemAttrs' >>>> >>>> i'm trying to understand this ORM, because it *looks* like it should >>>> be very automated & easy to use. (By comparison, has anyone here used >>>> ZF1's >>>> ORM? Yikes.) But i don't know what i'm doing wrong here. It *seems* >>>> like i'm following the guide, but i'm obviously mixing something up. >>>> >>>> >>>> -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscr...@googlegroups.com. To post to this group, send email to cake-php@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.