[英]associate cakephp model to non-cakephp database table
是否可以在CakePHP應用程序中創建模型並將該模型與根本不與CakePHP應用程序關聯的數據庫表相關聯?
例如,該數據庫表屬於另一個應用程序,我們想在CakePHP中創建一個使用該表的模型(因此該表完全不符合CakePHP的約定)。 我該怎么做呢? 我需要在模型中放入什么才能使關聯在不更改表的情況下正常工作(我需要能夠對該表執行基本的CRUD操作)
有什么想法嗎?
謝謝
是的,你可以這么做。 例如,如果您有一個帶有idCandidat主鍵的cand表,則可以創建一個模型並使用$ useTable和$ primaryKey屬性:
class Candidat extends AppModel{
var $name = 'Candidats';
var $useTable = 'cand';
var $primaryKey = 'idCandidat';
//etc.
}
然后繼續像在普通控制器中一樣在控制器中使用模型。
您甚至可以使用完全不同的數據庫或不同服務器上的表。 為此,您可以使用(我將只擴展@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',
);
當然,您可以根據需要命名DataSource。
您可以在查找功能中設置字段(列) -http://book.cakephp.org/1.3/en/view/1018/find或者,如果您希望將字段設置為關聯,則可以執行以下操作:
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'fields' => array('name','phone')
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.