データベーステーブルにIDを追加するためのベストプラクティスを探しています。例として、多くのレシピを持つメンバー(モデル)があります。レシピモデルは、それがメンバーに属していることを示しています。
public $belongsTo = array(
'Member' => array(
'className' => 'Member',
'foreignKey' => 'member_id',
)
);
新しいレシピをデータベースに保存するときにこれで十分だと思いましたが、エラーが発生したため、ケーキだけでは関係を理解できないことがわかりました(「一般的なエラー:1364フィールド'member_id'にはデフォルトがありません値」)addを使用する場合:
public function add() {
if ($this->request->is('post')) {
$this->Recipe->create();
if ($this->Recipe->save($this->request->data)) {
$this->Session->setFlash(__('The recipe has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The recipe could not be saved. Please, try again.'));
}
}
}
さて、この場合、追加することで問題を簡単に回避できます
$this->request->data['Recipe']['member_id'] = $this->Auth->user('id');
ただし、通常、追加するIDはAuthデータと一緒に保存されません。だから私は何か他のものに属するものを保存するときにIDにアクセスする方法を知りたいです。
編集:私の質問はおそらく十分に表現されていなかったと思います。私が探しているものを言い直します:
ユーザーhasManyA、hasMany B、hasManyCを言います。CはB、A、およびUserに属します(Cのテーブルにはuser_id、a_id、およびb_idが含まれます)。ユーザーがログインし、特定のA、次に特定のBを選択します。ユーザーは新しいCを追加したいと考えています。新しいCエントリのすべてのID値を取得するための最良の方法は何ですか。たくさんのセッション変数を設定するだけですか?それらはすべてURLで渡す必要がありますか?もっと良い方法はありますか?