私はここブラジルの大学のシステムを開発しています。このシステムには、次のモデルがあります。- 州; - 街; - 大学; - 単位; - クラス;
Ok。関係は次のとおりです。 - 国は国に属します。- 市は州に属します。-大学は国に属しています(私のデータベースでは、すべての国に州が登録されているわけではなく、すべての州に都市が登録されているわけではないため、ユーザーに大学を都市に登録するよう要求することはできませんでした); - ユニット所属大学; - クラスは大学に属します (すべての大学にユニットが登録されているわけではないため)。
Ok。これで、皆さんが私の状況を理解できるように、適切な背景を設定できたと思います。次に、質問自体に進みます。
私のモデルクラスのビューでは、国と(州市がある場合)を表示したいと思います。また、ユニットやユニバーシティなどの他のモデル ビューにそのようなコンテンツを表示する必要があるかもしれません。
しかし、クラス モデルでそれを実行しようとすると、country_id しか表示できません。私の大学のデータベース テーブルの外部キー。これは、Class モデルが University に属しているためで、University のプロパティに簡単にアクセスできるからです。ただし、国のIDにアクセスしたくはありません。名前が必要です。そして、将来的には他のプロパティが必要になるかもしれません。
それ、どうやったら出来るの?モデル クラスに直接関係がない場合、モデルの国のプロパティにアクセスするにはどうすればよいですか?
多くのハグとキス。誰かがこれで私を助けてくれることを願っています。
pS:私はちょっとした敗者の解決策を管理しました:私のクラスコントローラーでは、次のことを行いました(モデルの国、州、都市の変数にアクセスできるようにします):
- View 関数で、State と City のモデルをロードしました (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では、Countryデータの配列、Stateデータの配列、およびCityデータの配列を取得します。そして、ビューで、州と都市の配列が長さ = 0 ではないかどうかを確認して、それらとすべてを表示します...しかし、これを行うためのより良い方法が必要だと思います。
PPS:
もう 1 つの質問は... Index.ctp はどうですか? 作業しているクラスがわからない場合はどうすればよいですか? ビューにロジックと検索メソッドが必要ですか? それは単にコードを台無しにするだけではありませんか?