0

3つのモデルを手に入れました

  1. ユーザー
  2. グループ
  3. サブスクリプション

Subscriptions テーブルには 3 つのフィールドがあります

  1. ID
  2. ユーザーID
  3. group_id

私が欲しいのは、ここに各グループのすべてのサブスクライバーのリストを表示したいということです ( /groups/viewcourse/id )

グループコントローラー:

public function viewcourse($id=NULL)
{
    $this->set('viewcourse', $this->Group->read(NULL,$id));
    $this->set('course', $this->Group->find('all', array('conditions'=>array('Group.id'=>$id))));


     $this->set('allnotes', $this->Group->Note->find('all', array(
    'conditions'=>array('Note.group_id' => $id),'order' => array('Note.created DESC'))))
}

ユーザーコントローラー:

public function subscribers()
{
$subscribers = $this->User->Subscription->find('all',array(
  'conditions'=>array(
  'Subscription.group_id'=>26)
  )
 );
}

ここで、UsersController で、特定のグループまたはグループ 26 にサブスクライブしているユーザーのリストを表示できるように、URL から何らかの形でグループ ID を取得して、26 の代わりに配置したいと考えています。

私の頭に浮かぶ唯一の方法は、URL から ID を取得することです。

私が試したのは、 $this->params['pass'][0] を UsersController (subscribers action) に追加することですが、null であり no である Subscribers アクションからのみ ID を渡すため、viewcourse から ID を取得していません。使用する。/groups/viewcourse/id からの ID が必要です。

4

2 に答える 2

0

データベース情報を取得する関数は、コントローラーではなくモデルに配置する必要があります。そうすれば、任意のコントローラーからロジックとデータにアクセスできます。

コード例:

//GroupsController
public function viewcourse($id=NULL)
{
    //...
    $this->loadModel('Subscription');
    $subscribers = $this->Subscription->getAllByGroupId($id);
    //...
}

//Subscription model
public function getAllByGroupId($groupId = null) {
    if(empty($groupId)) return false;
    return $this->findAllByGroupId($groupId);
}
于 2012-11-28T20:02:07.857 に答える
0

リンクヘルパーと一緒に別のパラメーターをコントローラーに渡すだけです。ビューで:

<?php echo $this->Html->link('Subscribers', array('controller'=>'users', 'action'=>'subscribers', 'group'=>$viewcourse['Group']['id'])); ?>

サブスクライバー関数のパラメーターを取得します

 $group_id = $this->params['named']['group'];
于 2012-11-28T19:34:16.060 に答える