我在其中一個模型中獲得了字段country_id
,而不是創建包含不會更改的國家/地區列表的countries
表,而最佳方法是什麼?如何在CakePHP上使用沒有數據庫的模型並建立關聯?
我想使用沒有數據庫表的模型,但我不知道如何實現這一點。
請幫忙。提前致謝!
我在其中一個模型中獲得了字段country_id
,而不是創建包含不會更改的國家/地區列表的countries
表,而最佳方法是什麼?如何在CakePHP上使用沒有數據庫的模型並建立關聯?
我想使用沒有數據庫表的模型,但我不知道如何實現這一點。
請幫忙。提前致謝!
我會建議使用ArraySource
由社區維護的CakePHP Datasources plugin:
master
branch2.0
branch下載整個插件並將內容提取到app/plugins/datasources
。
定義在app/config/database.php
到數據源的連接:
public $array = array('datasource' => 'Datasources.array');
這應該允許您通過在模型中定義的記錄來模擬表:
class Country extends AppModel {
public $useDbConfig = 'array';
public $records = array(
array('id' => 1, 'name' => 'Test record')
);
}
作爲替代方案,如果沒有其他數據除此之外,基本上,這個國家是一個什麼樣的國家,你可以把它保持在同一個模型中,而不需要關聯。
class MyModel extends AppModel {
public static $countries = array(
'Africa', 'America', ..., 'Zululand'
);
public $validate = array(
'country' => array(
'rule' => array('inList', self::$countries),
...
)
)
}
我從來沒有去過這個國家的'非洲';) – tsukimi
可以完全以使用沒有表的語法:沿東西線
class ModelWithoutTable extends AppModel
{
var $useTable = false;
}
有這個國家型號無表,但你需要模擬一個數據源(如XML,YAML, PHP數組等)的國家數據。
希望這會有所幫助。
謝謝..像魅力一樣工作。 :) –
你知道這些數據源的doc在哪裏嗎?謝謝 –
除了版本庫的[自述文件](https://github.com/cakephp/datasources#readme)之外,唯一的其他文檔是在一些數據源的docblock中([amazon](https://github.com) /cakephp/datasources/blob/c8da44d638c9fa5c9baada7ead7f366bdb1d03e1/models/datasources/amazon_associates_source.php#L22)|[csv](https://github.com/cakephp/datasources/blob/c8da44d638c9fa5c9baada7ead7f366bdb1d03e1/models/datasources/csv_source.php#L22) )。要查找每個數據源的配置選項,請查找「_baseConfig」或「config」的實例。代碼中的更多文檔將是一個明顯的改進。 – deizel
definitly一個不錯的方法。還不知道那個。將檢查出來。我曾經這樣做直到現在:http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/ – mark