CakePHP从模型访问多个数据库表

时间:2014-03-15 07:47:50

标签: cakephp

我正在使用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中调用多个数据库表?

3 个答案:

答案 0 :(得分:0)

首先,您应该阅读模型关联Model associations

其次,如果这不符合您的需求(意味着模型之间没有明确的关联,说实话,我没有看到GetFruit之间的联系)您可以使用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()'

进行访问