Re: debug a failed save()

2009-01-06 Thread brian

Gee, do I feel (extra) stupid. Not only was that the problem,  but the
msg I sent last night explaining this was sent to myself, not the
group. Here's the msg:
-- snip --
Arrgghhh! PEBCAK all the way! I created a behavior for dealing with
different types of users, which I'm using in addition to Extendable.
In the beforeSave() I had forgotten that I'd left--you guessed it--
"return false;" Yeesh!!

I hadn't noticed it because I was planning on not saving anything from
the Member model itself. So, I removed that, set the $validate param
in save() back in along with the fieldlist, and now all is good.

Cripes! I can't believe how many hours I spent dicking around with this.
-- snip --

Everything's working like gangbusters now. Once this site is ready for
production, I plan on writing up a detailed account about how I dealt
with a fairly complicated user-type situation.

Thanks for replying.

On Tue, Jan 6, 2009 at 8:40 AM, Adam Royle  wrote:
>
> Can you show your model & app model code? I'm guessing somewhere
> you're not returning true from a beforeValidate() or beforeSave()
> method.
>
> Eg. you should do something like this if that's the case.
>
> function beforeSave() {
>
>if (  ) {
>// cancel the save
>return false;
>} else {
>// modify a field before saving
>$this->data[$this->alias]['field'] = 'blah';
>}
>
>// ask our parent if it's ok to save!
>return parent::beforeSave();
>
> }
>
>
> On Jan 6, 5:13 am, brian  wrote:
>> I've gone as far as I can in debugging why a save() is failing. I'd
>> appreciate any tips.
>>
>> The situation:
>>
>> I have a form on a user's profile page for uploading a headshot image.
>> The image is being saved ok. The part that's failing is updating the
>> user's record in the DB.
>>
>> The code:
>> $this->Member->recursive = -1;
>> $this->data = $this->Member->read(null, $id);
>>
>> ...  // upload and add headhsot info to $this->data['Member']
>>
>> $this->Member->validate = array();
>>
>> if ($this->Member->save($this->data))
>> {
>> $this->flash('image uploaded', $referer);}
>>
>> else
>> {
>> //debug($this->data);exit;
>> //debug($this->Member->validationErrors);exit;
>> $this->flash('DB info not saved', $referer);
>>
>> }
>>
>> As you can see, I've disabled validation in an attempt to get this to
>> work. And I've also tried dumping both $this-data and
>> $validationErrors. The latter, as expected, is empty. The former
>> appears perfectly fine. An example:
>>
>> Array
>> (
>> [Member] => Array
>> (
>> [id] => 1596
>> [created] => 2009-01-05 03:32:31
>> [modified] => 2009-01-05 13:26:03
>> [last_login] => 2009-01-05 13:26:03
>> ...
>> [headshot] => test1_test1.png
>> [headshot_width] => 225
>> [headshot_height] => 228
>> [headshot_mimetype] => image/png
>> )
>> )
>>
>> I've enabled query logging for the DB and dropped this in just before
>> the attempt to save:
>>
>> $this->Member->query("SELECT('SAVING ...')");
>>
>> This is the result:
>>
>> 5 Query   SELECT('SAVING ...')
>> 5 Query   SELECT COUNT(*) AS `count` FROM `users` AS `Member`
>> WHERE `Member`.`id` = 1596
>> 5 Quit
>>
>> That query, used in a terminal, returns 1, as expected.
>>
>> So, can anyone suggest some other way to debug this failed save? I
>> need to figure out why Cake packed it in after that count() query. The
>> Model class doesn't seem to have anything else available beside
>> $validationErrors. I hunted around a little in DataSource and DboMysql
>> but it doesn't appear to be an SQL issue.
>>
>> In a nutshell, where does one look to learn the reason for a failed
>> save? And, as the save method is in the model, why doesn't the model
>> expose failed saves?
>>
>> A note about the users/Member thing: I'm using inheritance here but I
>> can confirm that saves do work fine. It's just this one action that's
>> giving me trouble. In any case, the point of this is that I don't know
>> where to look to find out for sure.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: debug a failed save()

2009-01-06 Thread Adam Royle

Can you show your model & app model code? I'm guessing somewhere
you're not returning true from a beforeValidate() or beforeSave()
method.

Eg. you should do something like this if that's the case.

function beforeSave() {

if (  ) {
// cancel the save
return false;
} else {
// modify a field before saving
$this->data[$this->alias]['field'] = 'blah';
}

// ask our parent if it's ok to save!
return parent::beforeSave();

}


On Jan 6, 5:13 am, brian  wrote:
> I've gone as far as I can in debugging why a save() is failing. I'd
> appreciate any tips.
>
> The situation:
>
> I have a form on a user's profile page for uploading a headshot image.
> The image is being saved ok. The part that's failing is updating the
> user's record in the DB.
>
> The code:
> $this->Member->recursive = -1;
> $this->data = $this->Member->read(null, $id);
>
> ...  // upload and add headhsot info to $this->data['Member']
>
> $this->Member->validate = array();
>
> if ($this->Member->save($this->data))
> {
>         $this->flash('image uploaded', $referer);}
>
> else
> {
>         //debug($this->data);exit;
>         //debug($this->Member->validationErrors);exit;
>         $this->flash('DB info not saved', $referer);
>
> }
>
> As you can see, I've disabled validation in an attempt to get this to
> work. And I've also tried dumping both $this-data and
> $validationErrors. The latter, as expected, is empty. The former
> appears perfectly fine. An example:
>
> Array
> (
>     [Member] => Array
>         (
>             [id] => 1596
>             [created] => 2009-01-05 03:32:31
>             [modified] => 2009-01-05 13:26:03
>             [last_login] => 2009-01-05 13:26:03
>             ...
>             [headshot] => test1_test1.png
>             [headshot_width] => 225
>             [headshot_height] => 228
>             [headshot_mimetype] => image/png
>         )
> )
>
> I've enabled query logging for the DB and dropped this in just before
> the attempt to save:
>
> $this->Member->query("SELECT('SAVING ...')");
>
> This is the result:
>
> 5 Query       SELECT('SAVING ...')
> 5 Query       SELECT COUNT(*) AS `count` FROM `users` AS `Member`
> WHERE `Member`.`id` = 1596
> 5 Quit
>
> That query, used in a terminal, returns 1, as expected.
>
> So, can anyone suggest some other way to debug this failed save? I
> need to figure out why Cake packed it in after that count() query. The
> Model class doesn't seem to have anything else available beside
> $validationErrors. I hunted around a little in DataSource and DboMysql
> but it doesn't appear to be an SQL issue.
>
> In a nutshell, where does one look to learn the reason for a failed
> save? And, as the save method is in the model, why doesn't the model
> expose failed saves?
>
> A note about the users/Member thing: I'm using inheritance here but I
> can confirm that saves do work fine. It's just this one action that's
> giving me trouble. In any case, the point of this is that I don't know
> where to look to find out for sure.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: debug a failed save()

2009-01-05 Thread Webweave

Did you try setting debug=2 or 3 so you can see the queries that were
executed, and the data ?

The code you posted doesn't show you disabling validation, Cake does
the validation unless you a) remove any validation from the model or
b) you explicitly turn off validation in your save call.

Without seeing the actual Cake debug, it's hard for anybody to tell
you what went wrong.

Also make sure you have something like the following in your
default.ctp:

check('Message.flash')) {
$session->flash();
}

// Display Auth messages ...
if ($session->check('Message.auth')) {
$session->flash('auth');
}
?>


On Jan 5, 11:13 am, brian  wrote:
> I've gone as far as I can in debugging why a save() is failing. I'd
> appreciate any tips.
>
> The situation:
>
> I have a form on a user's profile page for uploading a headshot image.
> The image is being saved ok. The part that's failing is updating the
> user's record in the DB.
>
> The code:
> $this->Member->recursive = -1;
> $this->data = $this->Member->read(null, $id);
>
> ...  // upload and add headhsot info to $this->data['Member']
>
> $this->Member->validate = array();
>
> if ($this->Member->save($this->data))
> {
>         $this->flash('image uploaded', $referer);}
>
> else
> {
>         //debug($this->data);exit;
>         //debug($this->Member->validationErrors);exit;
>         $this->flash('DB info not saved', $referer);
>
> }
>
> As you can see, I've disabled validation in an attempt to get this to
> work. And I've also tried dumping both $this-data and
> $validationErrors. The latter, as expected, is empty. The former
> appears perfectly fine. An example:
>
> Array
> (
>     [Member] => Array
>         (
>             [id] => 1596
>             [created] => 2009-01-05 03:32:31
>             [modified] => 2009-01-05 13:26:03
>             [last_login] => 2009-01-05 13:26:03
>             ...
>             [headshot] => test1_test1.png
>             [headshot_width] => 225
>             [headshot_height] => 228
>             [headshot_mimetype] => image/png
>         )
> )
>
> I've enabled query logging for the DB and dropped this in just before
> the attempt to save:
>
> $this->Member->query("SELECT('SAVING ...')");
>
> This is the result:
>
> 5 Query       SELECT('SAVING ...')
> 5 Query       SELECT COUNT(*) AS `count` FROM `users` AS `Member`
> WHERE `Member`.`id` = 1596
> 5 Quit
>
> That query, used in a terminal, returns 1, as expected.
>
> So, can anyone suggest some other way to debug this failed save? I
> need to figure out why Cake packed it in after that count() query. The
> Model class doesn't seem to have anything else available beside
> $validationErrors. I hunted around a little in DataSource and DboMysql
> but it doesn't appear to be an SQL issue.
>
> In a nutshell, where does one look to learn the reason for a failed
> save? And, as the save method is in the model, why doesn't the model
> expose failed saves?
>
> A note about the users/Member thing: I'm using inheritance here but I
> can confirm that saves do work fine. It's just this one action that's
> giving me trouble. In any case, the point of this is that I don't know
> where to look to find out for sure.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



debug a failed save()

2009-01-05 Thread brian

I've gone as far as I can in debugging why a save() is failing. I'd
appreciate any tips.

The situation:

I have a form on a user's profile page for uploading a headshot image.
The image is being saved ok. The part that's failing is updating the
user's record in the DB.

The code:
$this->Member->recursive = -1;
$this->data = $this->Member->read(null, $id);

...  // upload and add headhsot info to $this->data['Member']

$this->Member->validate = array();

if ($this->Member->save($this->data))
{
$this->flash('image uploaded', $referer);
}
else
{
//debug($this->data);exit;
//debug($this->Member->validationErrors);exit;
$this->flash('DB info not saved', $referer);
}

As you can see, I've disabled validation in an attempt to get this to
work. And I've also tried dumping both $this-data and
$validationErrors. The latter, as expected, is empty. The former
appears perfectly fine. An example:

Array
(
[Member] => Array
(
[id] => 1596
[created] => 2009-01-05 03:32:31
[modified] => 2009-01-05 13:26:03
[last_login] => 2009-01-05 13:26:03
...
[headshot] => test1_test1.png
[headshot_width] => 225
[headshot_height] => 228
[headshot_mimetype] => image/png
)
)

I've enabled query logging for the DB and dropped this in just before
the attempt to save:

$this->Member->query("SELECT('SAVING ...')");

This is the result:

5 Query   SELECT('SAVING ...')
5 Query   SELECT COUNT(*) AS `count` FROM `users` AS `Member`
WHERE `Member`.`id` = 1596
5 Quit

That query, used in a terminal, returns 1, as expected.

So, can anyone suggest some other way to debug this failed save? I
need to figure out why Cake packed it in after that count() query. The
Model class doesn't seem to have anything else available beside
$validationErrors. I hunted around a little in DataSource and DboMysql
but it doesn't appear to be an SQL issue.

In a nutshell, where does one look to learn the reason for a failed
save? And, as the save method is in the model, why doesn't the model
expose failed saves?

A note about the users/Member thing: I'm using inheritance here but I
can confirm that saves do work fine. It's just this one action that's
giving me trouble. In any case, the point of this is that I don't know
where to look to find out for sure.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---