簡體   English   中英

將cakephp模型關聯到非c​​akephp數據庫表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM