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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.