0

データベースで特定の関係システムを使用しましたが、モデルを書き始めたときに問題が発生しました。最初に、データベース スキーマを示します。

##USERS##
id

##CVS##
id
user_id

##SKILLS##
id
cv_id

user hasOne cv
cv belongsTo user
cv hasMany skill
skill belongsTo cv

この解決策は正しいように見えましたが、スキル テーブルで cv_id を取得しようとすると、次のように記述する必要がありました。

$cv_id = $this->Skill->find('first', array('user_id' => $this->Auth->user('id')));
$this->request->data['Skill']['cv_id'] = $cv_id['CV']['id'];

私はそれが非常に厄介な解決策だと思います。CakePHP でこの情報を取得するより良い方法はありますか、それともテーブル間の関係を変更する必要がありますか? この場合、どうすればよいですか?

4

1 に答える 1

0

次のコードを使用できます。

$this->Skill->virtualFields['cvid'] = 'CV.id';
$cv_id = $this->Skill->find('first', array('user_id' => $this->Auth->user('id')));
$this->request->data['Skill']['cv_id'] = $cv_id['Skill']['cvid'];

---------------------- OR -----------------------------

$this->Skill->virtualFields['cv_title'] = 'CV.title';
$cv_id = $this->Skill->find('first', array('user_id' => $this->Auth->user('id')));
$this->request->data['Skill']['cv_title'] = $cv_id['Skill']['cv_title'];

---------------------- OR -----------------------------

$this->Skill->virtualFields['cv_title'] = 'CV.title';
$this->request->data = $this->Skill->find('first', array('user_id' => $this->Auth->user('id')));

上記の構文を使用して、virtualFields を動的に追加できます。

ここに説明があります。それがあなたのために働くことを願っています。

于 2012-07-16T07:14:11.333 に答える