Sunday, February 28, 2010

Re: Create database table using controller.

I have no idea :) Hopefully someone else may know!

I just wonder, why do you want to create the table only when a
customer record is to be saved!
To me that sounds like you haven't designed your database at all - or
maybe you have, but you don't see a need to create the tables until
data is needed. I am guessing here :)

By designing you database first, you will have taken into account any
relationships between tables, and you will let the database engine
handle the constraints between tables, as well as ensuring unique keys
and so forth!

Anyway, I hope you find a solid solution to whatever you want to
make :)
Enjoy,
John


On Feb 28, 11:34 am, veepee <vpc...@gmail.com> wrote:
> I've found the problem.
> It is caused by the listsources() method in cakephp has cached the
> sources array which holds the array of tables available in database.
> My question now is, is it possible to reset the sources to null in my
> controller?
>
> class DataSource extends Object {
> function sources($reset = false) {
>                 if ($reset === true) {
>                         $this->_sources = null;
>                 }
>                 return array_map('strtolower', $this->listSources());
>         }
>
> }
>
> On Feb 28, 4:17 pm, John Andersen <j.andersen...@gmail.com> wrote:
>
> > Yes, CakePHP will not find your table, because your table is not named
> > in plural - customers - which is why I wrote that you should conform
> > to CakePHP conventions.
>
> > And do add a primary key to your customers table definition - CakePHP
> > expects there to be the ID primary key column in the table.
> > Enjoy,
> >    John
>
> > On Feb 28, 6:38 am, veepee <vpc...@gmail.com> wrote:
>
> > > Hi John,
>
> > > Thanks for your prompt reply.
> > > I have read the CakePHP book but i couldn't find a solution.
> > > I get this error, "Database table customers is not found" for the
> > > first time I run the script.
> > > However, when i refresh the page, the data will be able to save
> > > accordingly.
>
> > > The scenario is as below:
> > > 1. In my database, there are no Customer table.
> > > 2. So, I use a dummy table to create the customer table.
> > >  $this->Q->query("CREATE TABLE customer
> > >                       (First_Name char(50),
> > >                       Last_Name char(50),
> > >                       Address char(50) default 'Unknown',
> > >                       City char(50) default 'Mumbai',
> > >                       Country char(25),
> > >                       Birth_Date date)");
> > >         }
> > > 3. The snippet above will create the Customer table.
> > > 4. However, when I load the model for Customer,
> > > $this->loadModel('Customer');
> > > it returns me the error "Database table customers is not found".
> > > 5. When I refresh the page, there is no error and everything works
> > > fine because the customer table has been created.
>
> > > Regards,
> > > Veepee
>
> > > On Feb 28, 12:58 am, John Andersen <j.andersen...@gmail.com> wrote:
>
> > > > What is your issue here? Was the table not created, was the model not
> > > > loaded, was the data not saved?
>
> > > > Also do look into the CakePHP naming conventions for tables, models
> > > > and controllers. Following those will make your life a lot easier.http://book.cakephp.org/view/22/CakePHP-Conventions
>
> > > > Another thing is that your customer table has not primary key!
>
> > > > So I sincerly recomend you to read the CakePHP book first!
> > > > Enjoy,
> > > >    John
>
> > > > On Feb 27, 4:46 pm, veepee <vpc...@gmail.com> wrote:
>
> > > > > Hi All,
>
> > > > > I am new to cakePHP and I've tried googling for this topic but to no
> > > > > avail. I need to create a database table from controller. May i know
> > > > > is it possible to insert into the newly created table, i.e. in this
> > > > > example, the customer table using model?
>
> > > > >  $this->Q->query("CREATE TABLE customer
> > > > >                       (First_Name char(50),
> > > > >                       Last_Name char(50),
> > > > >                       Address char(50) default 'Unknown',
> > > > >                       City char(50) default 'Mumbai',
> > > > >                       Country char(25),
> > > > >                       Birth_Date date)");
> > > > >         }
> > > > >  $this->loadModel('Customer');
> > > > >  $this->Customers->saveAll(data);
>
> > > > > I've tried it but this does not work. May I know if there are any
> > > > > alternatives besides creating another insert statement using
>
> > > > > $this->Q->query("INSERT INTO customer...");

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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en

No comments: