2

私のサイト (Cake 2.x) では、ユーザーはお気に入りを追加できます。ユーザーがログインすると、それは魅力のように機能します。

ユーザーがログインしていない場合、お気に入りをセッション配列に保存します。

ユーザーがログインした後にセッションのお気に入りをデータベースに保存する方法について、私は今苦労しています。

今のところ、私のセッション配列は次のようになります。

$sessiondata = array('item_id' => $id, 'title' => $fitem['Item']['title'],'slug' => $fitem['Item']['slug']);

私のデータベースでは、$id と User.id のみが必要です (ログイン後)。login() 後にエントリをデータベースに保存するにはどうすればよいですか?

私の結合テーブルにはフィールドが含まれています: item_id と user_id

前もって感謝します

4

3 に答える 3

2

モデルにデータを設定し、次のように保存するだけです。

$this->Item->create(array(
    'item_id' => $sessiondata['item_id'],
    'title' => $sessiondata['title'],
    'slug' => $sessiondata['slug']
));
$this->Item->save();

これにより、レコードがデータベースに保存されます。

于 2013-02-13T15:42:05.447 に答える
0

しばらく時間がかかりましたが、ようやくこれが機能するようになりました。ここにあります:

私の AppController では、ユーザーをアイテム コントローラーの afterlogin() アクションにリダイレクトしました。

public $components = array(
                      'Auth'=>array(
                            'loginRedirect'=>array(
                                   'controller' => 'items', 'action' => 'afterlogin'),
                      )));

次に、ItemsController に afterlogin() 関数を追加しました。

public function afterlogin(){
        $favors = $this->Session->read('favorites');//get favorites stored in Session
        $this->loadModel('Item2user');//Load my join-table model
        foreach ($favors as $favor){
            //search for existing favorites
            $found = $this->Item2user->find('all', array(
                    'conditions' => array('item_id =' => $favor['item_id'],
                                    'user_id =' => $this->Auth->user('id'))
                    ));

            if($found){
                //the entry is already in the db, ->do nothing
            }
            else {
                //now save the entry to the join-table
                $this->Item->create(array(
                   'Item' => array('id' => $favor['item_id']),
                   'User' => array('id' => $this->Auth->user('id'))
               ));
               $this->Item->save();
            }
        }
        $this->redirect('/');
    }

これが誰にも役立つことを願っています..

于 2013-02-17T20:37:43.647 に答える