0

データベーステーブルに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で渡す必要がありますか?もっと良い方法はありますか?

4

2 に答える 2

0

データベースに保存したい情報を提供する必要があります。これは、すでに述べたように Auth 情報を使用するか、利用可能なすべてのメンバーから選択できるフォームを介して情報を取得することを意味します。いずれにせよ、情報はどこかから来なければなりません。ゼロから自分自身を作成することはできません。

于 2012-11-18T17:49:35.217 に答える
0

ユーザーがA、B、またはCを選択または選択している場合、何らかの方法でデータを保存して処理できます。

通常、一般的な方法はフォームを使用することです。Javascript を使用している場合は、非表示の入力を設定できます。AJAX を使用している場合は、内部でそれらを使用して最終的な Cake 関数を呼び出すことができます。

ユーザーがそれらをどのように選択するかを確認し、その ID を何らかの変数に格納して操作する必要があります。投稿、取得、セッション、クッキー...

于 2012-11-18T20:08:15.490 に答える