cakePHP-模型关系
我正在为巴西的一所大学开发一个系统。在这个系统中,我有以下模型: -国家; -国家; -城市; -大学; -单位; -阶级 嗯。这些关系是: -国家属于国家; -城市属于国家; -大学属于国家(因为,在我的数据库中,不是每个国家都有州向它注册,也不是每个州都有城市向它注册,所以我不能要求用户向城市注册大学); -大学所属单位; -班级属于大学(因为不是每所大学都有注册单位) 嗯。我想现在我已经为你们了解我的情况设置了一个良好的背景。现在谈谈问题本身: 在我的模型课视图中,我想显示国家和城市(如果有州立城市)。我可能需要在其他模型视图(如Unit和University)中显示此类内容 但是当我尝试在我的课堂模型中这样做时,我只能在我的大学数据库表中显示国家id。为什么会这样,因为我的类模型属于大学,所以很容易访问我的大学属性。然而,我不希望访问该国的id,我想要它的名称。也许将来我会想要别的房子,谁知道呢 我该怎么做?当我的模型类与模型国家没有直接关系时,如何访问模型国家的属性 许多thx拥抱和亲吻。希望有人能帮我做这个 p、 S: 我管理了一个类似于失败者的解决方案:在我的类控制器中,我做了以下工作(这样我就可以访问模型国家、州和城市的变量):cakePHP-模型关系,cakephp,models,database-relations,Cakephp,Models,Database Relations,我正在为巴西的一所大学开发一个系统。在这个系统中,我有以下模型: -国家; -国家; -城市; -大学; -单位; -阶级 嗯。这些关系是: -国家属于国家; -城市属于国家; -大学属于国家(因为,在我的数据库中,不是每个国家都有州向它注册,也不是每个州都有城市向它注册,所以我不能要求用户向城市注册大学); -大学所属单位; -班级属于大学(因为不是每所大学都有注册单位) 嗯。我想现在我已经为你们了解我的情况设置了一个良好的背景。现在谈谈问题本身: 在我的模型课视图中,我想显示国家和城市(如果
- 在视图功能中,我加载了州和城市的模型(我可以通过关系类->大学->国家访问国家模型)李>
- 然后,我使用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); }
另一个问题是…Index.ctp呢?如果我不知道我在哪个班级工作,我该怎么做?我是否需要在视图中找到逻辑和方法?这不是把代码弄乱了吗?如果不发布代码,很难为您指明正确的方向。但是,假设您的模型配置正确,您应该能够执行以下操作:
public function view($id){
$class = $this->Class->find('first', array('conditions' => array('Class.id' => $id), 'recursive' => 3));
$this->set('class', $class);
}
ClassController.php
view.ctp
只是一个警告,不要将recursive
设置为高于您需要的值,否则您可能会检索到您并不特别需要的内容。使用debug()
函数检查您的模型当前正在检索的内容,以便您可以做出更多明智的决定:
debug($class);
我希望这能有所帮助
public function view($id){
$class = $this->Class->find('first', array('conditions' => array('Class.id' => $id), 'recursive' => 3));
$this->set('class', $class);
}
debug($class);