将cakephp模型与非cakephp数据库表关联

时间:2012-05-04 21:38:58

标签: php cakephp cakephp-1.3

是否可以在CakePHP应用程序中创建模型,并将该模型与一个与cakePHP应用程序无关的数据库表关联起来?

例如,该数据库表属于另一个应用程序,我们想在CakePHP中创建一个使用该表的模型(因此该表根本不符合CakePHP的约定)。我该怎么做呢?我需要在模型中放置什么才能使该关联无需更改我的表(我需要能够在该表上执行基本的CRUD操作)

请问好吗?

谢谢

3 个答案:

答案 0 :(得分:1)

是的,你可以这样做。例如,如果你有一个带有idCandidat主键的cand表,你可以创建一个模型并使用$ useTable& $ primaryKey属性:

class Candidat extends AppModel{
var $name = 'Candidats';
var $useTable = 'cand';
var $primaryKey  = 'idCandidat';
//etc.
}

并继续在控制器中使用您的模型,就像您将使用普通模型一样。

答案 1 :(得分:0)

您甚至可以使用完全不同的数据库或不同服务器上的表。为此你可以使用(我只是扩展@chroonoss的例子,因为它是正确的):

class Candidat extends AppModel{
var $name = 'Candidats';
var $useTable = 'cand';
var $primaryKey  = 'idCandidat';

var $usedbConfig = 'external';
}

这将允许您使用不同的DataSource连接。这些定义如下:  app/config/database.php。您必须在此处使用名为“external”的属性才能使用此示例:

public $external = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => '101.180.10.17',
        'login' => 'username',
        'password' => 'yourTopSecretPassword',
        'database' => 'database_name',
        'prefix' => '',
        'encoding' => 'utf8',
    );

当然,您可以根据需要为数据源命名。<​​/ p>

答案 2 :(得分:0)

您可以在查找功能中设置字段(列) - http://book.cakephp.org/1.3/en/view/1018/find 或者,如果要将字段设置为关联,则可以执行以下操作:

var $belongsTo = array(
  'User' => array(
    'className' => 'User',
    'foreignKey' => 'user_id',
    'fields' => array('name','phone')
   )
);