我正在为巴西的一所大学开发一个系统。在这个系统中,我有以下模型: - 国家;- 状态; - 城市; - 大学; - 单元; - 班级;
好的。关系是: - 国家属于国家;- 城市属于国家;- 大学属于国家(因为在我的数据库中,不是每个国家都有注册的州,也不是每个州都有注册的城市,所以我不能要求用户将大学注册到城市);- 单位属于大学;- 班级属于大学(因为并非每所大学都有注册的单位);
好的。我想现在我已经为你们了解我的情况奠定了良好的背景。现在到问题本身:
在我的模型类的视图中,我想显示国家和(如果有州城市)。而且我可能需要在其他模型视图中显示这些内容,例如单元和大学。
但是当我尝试在我的 Class 模型中这样做时,我只能显示 country_id。我的大学数据库表中的外键。为什么会这样,那是因为我的 Class 模型属于 University,所以很容易访问我的 University 的属性。但是我不想访问国家的 id,我想要它的名字。也许将来我可能想要其他属性,谁知道呢?
我怎么做?当我的模型类与其没有直接关系时,如何访问模型国家的属性?
许多thx拥抱和亲吻。希望有人可以帮助我解决这个问题。
pS:我管理了一个失败的解决方案:在我的类控制器中,我完成了以下操作(所以我可以访问模型国家、州和城市的变量):
- 在 View 函数中,我加载了州和城市的模型(我可以通过关系 Class->University->Country 访问的国家模型);
然后我使用 find 方法为我想在 view.ctp 中显示的相关类查找相应的国家、州和城市。代码如下:
public function view($id = null) { $this->Class->id = $id; $this->set('class', $this->Class->read()); $this->loadModel('State'); $this->loadModel('City'); $country = $this->Class->Universsity->Country->find('first', array('conditions' => array('Country.id' => $this->Class->data['University']['country_id']),)); $state = $this->State->find('first', array('conditions' => array('State.id' => $this->Class->data['University']['state_id']),)); $city = $this->City->find('first', array('conditions' => array('City.id' => $this->Class->data['University']['city_id']),)); $this->set('country',$country['Country']);$this->set('city',$city); $this->set('state',$state); }
它有点工作......在我的 Wiew.ctp 中,我得到一个国家数据数组,一个国家数据数组和一个城市数据数组。在视图中,我检查 state 和 city 数组是否不是 length = 0 来显示它们和所有......但我认为必须有更好的方法来做到这一点。
PP:
另一个问题是……Index.ctp 呢?如果我不知道我正在与哪个班级一起工作,我将如何做到这一点?我必须有逻辑并在视图中查找方法吗?不就是乱码吗?