Re: Any chance to get the ID of a new created record BEFORE I save it to the DB?
Hey, @Jeremy: That's what I did after few tries. I set the fields where I need foreign keys to static values, checked the user-input of every model with $this->model->validates() and if sth. is wrong, I invalidate the field so I can put error messages besides the normal validation ones wherever I want to. When all user- given data is validatet, I save the models and use the id's to set the fields of the related models. It wasn't so bad at all, but when you use invalidate() you have to consider some REALLY important things, such as no use of READ in the action, as this will break the displaying of the field-related error messages (believe me, it does, and it took me quite a bit to figure that out!) Also you need to save the output of $this->model->invalidFields() because when you don't, error displaying is broken again. That's a known issue, hope they'll fix it in Cake 1.3. This was a tricky one, but in the end I'm really happy it worked out! :) Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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: Any chance to get the ID of a new created record BEFORE I save it to the DB?
I forgot to add... If the insert of B fails, you can delete A because you know the id of the most recently added row in A. On Dec 3, 8:32 am, Jeremy Burns wrote: > Have you considered an approach where you save A and B independently > (i.e. without worrying about the connecting ids), collecting the ids > of both A and B (using $this->A->id immediately after save) and then > doing a subsequent update? > > On Dec 3, 7:54 am, Quess wrote: > > > > > @Miles J > > Your idea won't work with mysql and id field as autoincrement (dunno > > how with other db but i assume that can be the same). > > If you have 100 rows with id from 1 to 100 and you will delete last 5 > > (from 96 to 100), then doing insert new rown you will get id 101, not > > 96. > > > @DigitalDude > > Please take a look athttp://blog.jamiedoris.com/geek/560/ > > > Best Regards, > > Miro > > > On Dec 3, 12:40 am, Miles J wrote: > > > > Its impossible to get the ID for a row your about to save, until after > > > you save it. > > > > The most you can do is do a query to select the last row in the table, > > > then increment its ID by one. > > > > On Dec 2, 2:18 pm, Dave wrote: > > > > > I think this would really help your situation > > > > >http://bakery.cakephp.org/articles/view/wizard-component-1-2-1 > > > > > I have used it in the past and if you read the documentation thoroughly > > > > it > > > > is very easy to implement. > > > > > On Wed, Dec 2, 2009 at 1:05 PM, DigitalDude > > > > wrote: > > > > > > Hey, > > > > > > I have a serious problem, and I need a hint from you guys to solve it! > > > > > > In one of my controller actions, I have the problem that I need to > > > > > create some records , let's say A, B, and C. > > > > > > The problem is, that record A needs a field from record B, which is > > > > > the ID of record B, and which I only can set when record A is saved, > > > > > and B is saved. In model C I need some information from the new > > > > > created models A and B, which I only have when model A and B are > > > > > saved. > > > > > > As this has to do with a register-process for my app, I need to > > > > > validate the data for all models. The problem is, that when model A > > > > > passes validation, and get's saved (which is needed to save the other > > > > > models) and model B fails, I have a "never used" record of model A in > > > > > my database. I need to get around that, because that's like a worst > > > > > case for me! > > > > > > I hope there's any chance to create a record, set this record with the > > > > > data I get from my registration form, and use the data for the other > > > > > records and save everything at the end of the action when every record > > > > > validates! > > > > > > I know I can check a record for validation by setting the model data > > > > > with > > > > > > $this->Model->set($this->data) > > > > > > and then > > > > > > if($this->Model->validates()) { > > > > > save the record(s) > > > > > } > > > > > > But right now I'm only able to do this when I have an edit action and > > > > > I set the Model to a specific record with like > > > > > > $this->Model->id = $id_from_get_parameter_or_so > > > > > > It would be VERY cool if there is a slight chance that I could create > > > > > a new record with current auto-increment id from the database, use > > > > > that id for my other models, and at the end when I created all needed > > > > > records I'd check every record for validation and if every record is > > > > > ok, they all get saved. > > > > > > If anyone knows how to achieve this, I would be very very happy! > > > > > > Cheers, > > > > > > DD > > > > > > P.S.: > > > > > > If needed, I can post the code of the whole RequestAction to see if > > > > > maybe there's another solution to this... > > > > > > Check out the new CakePHP Questions sitehttp://cakeqs.organdhelpothers > > > > > with their CakePHP related questions. > > > > > > 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 > > > > om>For more options, visit this group at > > > > >http://groups.google.com/group/cake-php?hl=en Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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: Any chance to get the ID of a new created record BEFORE I save it to the DB?
Have you considered an approach where you save A and B independently (i.e. without worrying about the connecting ids), collecting the ids of both A and B (using $this->A->id immediately after save) and then doing a subsequent update? On Dec 3, 7:54 am, Quess wrote: > @Miles J > Your idea won't work with mysql and id field as autoincrement (dunno > how with other db but i assume that can be the same). > If you have 100 rows with id from 1 to 100 and you will delete last 5 > (from 96 to 100), then doing insert new rown you will get id 101, not > 96. > > @DigitalDude > Please take a look athttp://blog.jamiedoris.com/geek/560/ > > Best Regards, > Miro > > On Dec 3, 12:40 am, Miles J wrote: > > > > > Its impossible to get the ID for a row your about to save, until after > > you save it. > > > The most you can do is do a query to select the last row in the table, > > then increment its ID by one. > > > On Dec 2, 2:18 pm, Dave wrote: > > > > I think this would really help your situation > > > >http://bakery.cakephp.org/articles/view/wizard-component-1-2-1 > > > > I have used it in the past and if you read the documentation thoroughly it > > > is very easy to implement. > > > > On Wed, Dec 2, 2009 at 1:05 PM, DigitalDude > > > wrote: > > > > > Hey, > > > > > I have a serious problem, and I need a hint from you guys to solve it! > > > > > In one of my controller actions, I have the problem that I need to > > > > create some records , let's say A, B, and C. > > > > > The problem is, that record A needs a field from record B, which is > > > > the ID of record B, and which I only can set when record A is saved, > > > > and B is saved. In model C I need some information from the new > > > > created models A and B, which I only have when model A and B are > > > > saved. > > > > > As this has to do with a register-process for my app, I need to > > > > validate the data for all models. The problem is, that when model A > > > > passes validation, and get's saved (which is needed to save the other > > > > models) and model B fails, I have a "never used" record of model A in > > > > my database. I need to get around that, because that's like a worst > > > > case for me! > > > > > I hope there's any chance to create a record, set this record with the > > > > data I get from my registration form, and use the data for the other > > > > records and save everything at the end of the action when every record > > > > validates! > > > > > I know I can check a record for validation by setting the model data > > > > with > > > > > $this->Model->set($this->data) > > > > > and then > > > > > if($this->Model->validates()) { > > > > save the record(s) > > > > } > > > > > But right now I'm only able to do this when I have an edit action and > > > > I set the Model to a specific record with like > > > > > $this->Model->id = $id_from_get_parameter_or_so > > > > > It would be VERY cool if there is a slight chance that I could create > > > > a new record with current auto-increment id from the database, use > > > > that id for my other models, and at the end when I created all needed > > > > records I'd check every record for validation and if every record is > > > > ok, they all get saved. > > > > > If anyone knows how to achieve this, I would be very very happy! > > > > > Cheers, > > > > > DD > > > > > P.S.: > > > > > If needed, I can post the code of the whole RequestAction to see if > > > > maybe there's another solution to this... > > > > > Check out the new CakePHP Questions sitehttp://cakeqs.organdhelpothers > > > > with their CakePHP related questions. > > > > > 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 > > > om>For more options, visit this group at > > > >http://groups.google.com/group/cake-php?hl=en Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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: Any chance to get the ID of a new created record BEFORE I save it to the DB?
@Miles J Your idea won't work with mysql and id field as autoincrement (dunno how with other db but i assume that can be the same). If you have 100 rows with id from 1 to 100 and you will delete last 5 (from 96 to 100), then doing insert new rown you will get id 101, not 96. @DigitalDude Please take a look at http://blog.jamiedoris.com/geek/560/ Best Regards, Miro On Dec 3, 12:40 am, Miles J wrote: > Its impossible to get the ID for a row your about to save, until after > you save it. > > The most you can do is do a query to select the last row in the table, > then increment its ID by one. > > On Dec 2, 2:18 pm, Dave wrote: > > > I think this would really help your situation > > >http://bakery.cakephp.org/articles/view/wizard-component-1-2-1 > > > I have used it in the past and if you read the documentation thoroughly it > > is very easy to implement. > > > On Wed, Dec 2, 2009 at 1:05 PM, DigitalDude > > wrote: > > > > Hey, > > > > I have a serious problem, and I need a hint from you guys to solve it! > > > > In one of my controller actions, I have the problem that I need to > > > create some records , let's say A, B, and C. > > > > The problem is, that record A needs a field from record B, which is > > > the ID of record B, and which I only can set when record A is saved, > > > and B is saved. In model C I need some information from the new > > > created models A and B, which I only have when model A and B are > > > saved. > > > > As this has to do with a register-process for my app, I need to > > > validate the data for all models. The problem is, that when model A > > > passes validation, and get's saved (which is needed to save the other > > > models) and model B fails, I have a "never used" record of model A in > > > my database. I need to get around that, because that's like a worst > > > case for me! > > > > I hope there's any chance to create a record, set this record with the > > > data I get from my registration form, and use the data for the other > > > records and save everything at the end of the action when every record > > > validates! > > > > I know I can check a record for validation by setting the model data > > > with > > > > $this->Model->set($this->data) > > > > and then > > > > if($this->Model->validates()) { > > > save the record(s) > > > } > > > > But right now I'm only able to do this when I have an edit action and > > > I set the Model to a specific record with like > > > > $this->Model->id = $id_from_get_parameter_or_so > > > > It would be VERY cool if there is a slight chance that I could create > > > a new record with current auto-increment id from the database, use > > > that id for my other models, and at the end when I created all needed > > > records I'd check every record for validation and if every record is > > > ok, they all get saved. > > > > If anyone knows how to achieve this, I would be very very happy! > > > > Cheers, > > > > DD > > > > P.S.: > > > > If needed, I can post the code of the whole RequestAction to see if > > > maybe there's another solution to this... > > > > Check out the new CakePHP Questions sitehttp://cakeqs.organdhelp others > > > with their CakePHP related questions. > > > > 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.comFor > > > more options, visit this group at > > >http://groups.google.com/group/cake-php?hl=en Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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: Any chance to get the ID of a new created record BEFORE I save it to the DB?
Its impossible to get the ID for a row your about to save, until after you save it. The most you can do is do a query to select the last row in the table, then increment its ID by one. On Dec 2, 2:18 pm, Dave wrote: > I think this would really help your situation > > http://bakery.cakephp.org/articles/view/wizard-component-1-2-1 > > I have used it in the past and if you read the documentation thoroughly it > is very easy to implement. > > On Wed, Dec 2, 2009 at 1:05 PM, DigitalDude > wrote: > > > Hey, > > > I have a serious problem, and I need a hint from you guys to solve it! > > > In one of my controller actions, I have the problem that I need to > > create some records , let's say A, B, and C. > > > The problem is, that record A needs a field from record B, which is > > the ID of record B, and which I only can set when record A is saved, > > and B is saved. In model C I need some information from the new > > created models A and B, which I only have when model A and B are > > saved. > > > As this has to do with a register-process for my app, I need to > > validate the data for all models. The problem is, that when model A > > passes validation, and get's saved (which is needed to save the other > > models) and model B fails, I have a "never used" record of model A in > > my database. I need to get around that, because that's like a worst > > case for me! > > > I hope there's any chance to create a record, set this record with the > > data I get from my registration form, and use the data for the other > > records and save everything at the end of the action when every record > > validates! > > > I know I can check a record for validation by setting the model data > > with > > > $this->Model->set($this->data) > > > and then > > > if($this->Model->validates()) { > > save the record(s) > > } > > > But right now I'm only able to do this when I have an edit action and > > I set the Model to a specific record with like > > > $this->Model->id = $id_from_get_parameter_or_so > > > It would be VERY cool if there is a slight chance that I could create > > a new record with current auto-increment id from the database, use > > that id for my other models, and at the end when I created all needed > > records I'd check every record for validation and if every record is > > ok, they all get saved. > > > If anyone knows how to achieve this, I would be very very happy! > > > Cheers, > > > DD > > > P.S.: > > > If needed, I can post the code of the whole RequestAction to see if > > maybe there's another solution to this... > > > Check out the new CakePHP Questions sitehttp://cakeqs.organd help others > > with their CakePHP related questions. > > > 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.comFor > > more options, visit this group at > >http://groups.google.com/group/cake-php?hl=en Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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: Any chance to get the ID of a new created record BEFORE I save it to the DB?
I think this would really help your situation http://bakery.cakephp.org/articles/view/wizard-component-1-2-1 I have used it in the past and if you read the documentation thoroughly it is very easy to implement. On Wed, Dec 2, 2009 at 1:05 PM, DigitalDude wrote: > Hey, > > I have a serious problem, and I need a hint from you guys to solve it! > > In one of my controller actions, I have the problem that I need to > create some records , let's say A, B, and C. > > The problem is, that record A needs a field from record B, which is > the ID of record B, and which I only can set when record A is saved, > and B is saved. In model C I need some information from the new > created models A and B, which I only have when model A and B are > saved. > > As this has to do with a register-process for my app, I need to > validate the data for all models. The problem is, that when model A > passes validation, and get's saved (which is needed to save the other > models) and model B fails, I have a "never used" record of model A in > my database. I need to get around that, because that's like a worst > case for me! > > I hope there's any chance to create a record, set this record with the > data I get from my registration form, and use the data for the other > records and save everything at the end of the action when every record > validates! > > I know I can check a record for validation by setting the model data > with > > $this->Model->set($this->data) > > and then > > if($this->Model->validates()) { >save the record(s) > } > > But right now I'm only able to do this when I have an edit action and > I set the Model to a specific record with like > > $this->Model->id = $id_from_get_parameter_or_so > > > It would be VERY cool if there is a slight chance that I could create > a new record with current auto-increment id from the database, use > that id for my other models, and at the end when I created all needed > records I'd check every record for validation and if every record is > ok, they all get saved. > > If anyone knows how to achieve this, I would be very very happy! > > Cheers, > > DD > > P.S.: > > If needed, I can post the code of the whole RequestAction to see if > maybe there's another solution to this... > > Check out the new CakePHP Questions site http://cakeqs.org and help others > with their CakePHP related questions. > > 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.comFor > more options, visit this group at > http://groups.google.com/group/cake-php?hl=en > Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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
Any chance to get the ID of a new created record BEFORE I save it to the DB?
Hey, I have a serious problem, and I need a hint from you guys to solve it! In one of my controller actions, I have the problem that I need to create some records , let's say A, B, and C. The problem is, that record A needs a field from record B, which is the ID of record B, and which I only can set when record A is saved, and B is saved. In model C I need some information from the new created models A and B, which I only have when model A and B are saved. As this has to do with a register-process for my app, I need to validate the data for all models. The problem is, that when model A passes validation, and get's saved (which is needed to save the other models) and model B fails, I have a "never used" record of model A in my database. I need to get around that, because that's like a worst case for me! I hope there's any chance to create a record, set this record with the data I get from my registration form, and use the data for the other records and save everything at the end of the action when every record validates! I know I can check a record for validation by setting the model data with $this->Model->set($this->data) and then if($this->Model->validates()) { save the record(s) } But right now I'm only able to do this when I have an edit action and I set the Model to a specific record with like $this->Model->id = $id_from_get_parameter_or_so It would be VERY cool if there is a slight chance that I could create a new record with current auto-increment id from the database, use that id for my other models, and at the end when I created all needed records I'd check every record for validation and if every record is ok, they all get saved. If anyone knows how to achieve this, I would be very very happy! Cheers, DD P.S.: If needed, I can post the code of the whole RequestAction to see if maybe there's another solution to this... Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. 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