使用两个表,数据检索在哪里(MVC中的第一步)

时间:2013-10-13 16:11:54

标签: php cakephp cakephp-appmodel object-persistence

我是MVC proramming的新手(甚至基于对象)。所以来自PhP 4. *我进入了OOP,MVC和Cake ..

我正在建立一个网站,来自不同国家的学院可以用来存储他们的数据(以及更多)。我现在正在建立基本的每个机构注册,并希望包括一个国家下拉列表。

我看到两种方法来解决这个问题;使用Country模型检索下拉列表的国家/地区表信息: $this->set('countries', ClassRegistry::init('Country')->getAllCountries()); (后跟\ Model \ Country.php中的函数)

或使用InstitutesController:
$this->set('countries', $this->Institute->Country->find('list', $params = array('fields' => array('id', 'country'))));

这是推荐的路线,因为两者似乎都有效?

1 个答案:

答案 0 :(得分:0)

使用第二个:

$this->set('countries', $this->Institute->Country->find('list', $params = array('fields' => array('id', 'country'))));

两者都有效,但是,您已经有了国家模型的实例(可通过$ this-> Institute-> Country访问)。那么,为什么要创建它的另一个实例呢?没有必要。

实际上不需要指定调用find方法的字段。 'id'将自动选为第一个字段,如果您将Country模式的显示字段设置为'country',那么这将是find('list')调用的默认用法。这样做:

// just after class Country extends AppModel {
public $displayField = 'country';

然后,您只需要使用此代码:

$this->set('countries', $this->Institute->Country->find('list'));