是否可以在CakePHP应用程序中创建模型,并将该模型与一个与cakePHP应用程序无关的数据库表关联起来?
例如,该数据库表属于另一个应用程序,我们想在CakePHP中创建一个使用该表的模型(因此该表根本不符合CakePHP的约定)。我该怎么做呢?我需要在模型中放置什么才能使该关联无需更改我的表(我需要能够在该表上执行基本的CRUD操作)
请问好吗?
谢谢
答案 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')
)
);