我正在使用CakePHP 2.x
有几个数据库表设置:
1)水果 2)Vege 3)喝酒
我可以使用下面的这一行访问CONTROLLER中的这些数据库表。通过这一行,我可以访问这些其他表。
public $uses = array('Get', 'Fruit', 'Vege', 'Drink');
我的问题是尝试在MODEL中访问它们。当我在下面尝试此代码时,会发生错误。
App::uses('AppModel', 'Model');
class Get extends AppModel {
public function getHistory( $limit ) {
$searchLimit = $limit;
$raw = $this->Fruit->find('all')
'$ this-> Fruit'行发生错误。
在非对象上调用成员函数find()...
如何在单个MODEL中调用多个数据库表?
答案 0 :(得分:0)
首先,您应该阅读模型关联Model associations
其次,如果这不符合您的需求(意味着模型之间没有明确的关联,说实话,我没有看到Get
和Fruit
之间的联系)您可以使用ClassRegistry
:
$Fruit = ClassRegistry::init('Fruit');
在使用ClassRegistry
之前,必须在课程定义之前添加:
App::uses('ClassRegistry', 'Utility');
答案 1 :(得分:0)
按$belongsTo, $hasMany or what ever relation you want.
而不是$this->Fruit->find()
答案 2 :(得分:0)
由于访问所有数据库表在CONTROLLER中完美运行,我在CONTROLLER而不是MODEL中执行了此操作。在CONTROLLER中执行此操作似乎更容易和更直接。
私人功能在CONTROLLER中创建,并由其他功能使用' $ this-> myPrivateFunctionName()'
进行访问