Как использовать модели без базы данных на CakePHP и иметь ассоциации?
У меня есть поле country_id
в одной из моих моделей и вместо создания таблицы countries
, которая содержит список стран, которые не меняются, какой лучший подход к этому?
Я думаю об использовании модели без таблицы базы данных, но я не знаю, как ее реализовать.
Пожалуйста, помогите. Спасибо заранее!
Ответы
Ответ 1
Я бы предложил использовать ArraySource
из поддерживаемого сообществом CakePHP плагин Datasources:
Загрузите весь плагин и извлеките содержимое в 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')
);
}
Ответ 2
вы можете использовать синтаксис no table:
class ModelWithoutTable extends AppModel
{
var $useTable = false;
}
чтобы эта модель страны была без таблиц, но вам нужно высмеять источник данных (т.е. XML, YAML, PHP Array и т.д.) для данных стран.
Надеюсь, это поможет.
Ответ 3
В качестве альтернативы, если нет других данных, прикрепленных к стране, кроме, в основном, идентификатора какой страны она, вы, вероятно, можете держать ее в одной модели без ассоциации. Что-то вроде:
class MyModel extends AppModel {
public static $countries = array(
'Africa', 'America', ..., 'Zululand'
);
public $validate = array(
'country' => array(
'rule' => array('inList', self::$countries),
...
)
)
}