Как использовать модели без базы данных на CakePHP и иметь ассоциации? - PullRequest
10 голосов
/ 03 августа 2011

У меня есть поле country_id в одной из моих моделей, и вместо создания таблицы countries, которая содержит список стран, которые не меняются, каков наилучший подход к этому?

Я думаю об использовании модели без таблицы базы данных, но я не знаю, как это реализовать.

Пожалуйста, помогите. Заранее спасибо!

Ответы [ 3 ]

15 голосов
/ 03 августа 2011

вы можете использовать синтаксис без таблиц:

class ModelWithoutTable extends AppModel
{
    var $useTable = false;
}

, чтобы эта модель страны была без таблиц, но вам нужно смоделировать источник данных (например, XML, YAML, PHP Array и т. Д.) Для странdata.

Надеюсь, это поможет.

10 голосов
/ 03 августа 2011

Я бы предложил использовать 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')
    );

}
1 голос
/ 03 августа 2011

В качестве альтернативы, если нет других данных, привязанных к стране, кроме, в основном, идентификатора страны, в которой вы находитесь, вы, вероятно, можете сохранить ее в той же модели без ассоциации.Что-то вроде:

class MyModel extends AppModel {

    public static $countries = array(
        'Africa', 'America', ..., 'Zululand'
    );

    public $validate = array(
        'country' => array(
            'rule' => array('inList', self::$countries),
            ...
        )
    )

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...