Reputation: 797
I'm building a CakePHP application, and I have a MySQL table which is not related to any controllers/models but I need to insert/update/get data from this table in one of my controllers/models and I want to do it with find
function (I know I can write the SQL statement and make ->query
in my models but I don't want to do it). The only solutions I saw in the web was to connect models and stuff like that. Any solutions for my case?
Thank you in advance!
Upvotes: 2
Views: 3542
Reputation: 1082
We can operate on table without creating Model file.
If we have table named "Holidays" then we can fetch the details as below in controller.
$this->loadModel("Holiday");
$result = $this->Holiday->find('all');
Upvotes: 0
Reputation: 54801
A model need not be used by an controller to be a valid model. If you want to operate on the table using model features, then create a model for it or use one on the fly.
You can then use that model from another model via either an association (belongsTo, hasOne). Or, create an instance using ClassRegistry::init('ModelName');
If you do not require the Model to have any associations, and simply want quick access to find records. You can call ClassRegistry::init('ModelName')
and CakePHP will auto-create the model for you. (ModelName
should be the CamelCase version of the table, see conventions)
Eg: You have a table in your database called documents
but do not have a Document.php
model file. Calling ClassRegistry::init('Document');
will create a model for that table on the fly.
ClassRegistry::init('Document')->find('all');
or even
$Document = ClassRegistry::init('Document');
$Document->find('all');
In a controller you can also use loadModel()
on the fly
$this->loadModel('Document');
$this->Document->find('all');
Upvotes: 9