关联CakePHP中的对象

时间:2013-10-07 15:09:12

标签: php oop cakephp relational-database

我有用户,我有课程。我正在尝试为用户在查看课程列表时创建“加入”按钮,以便将他们订阅到课程。

我被告知要使用

class Course extends AppModel
{
  public $hasAndBelongsToMany = array('User');
}

class User extends AppModel
{
  public $hasAndBelongsToMany = array('Course');
}

但我不知道如何实现实际按钮以及将信息发布到名为courses_users

的表格中

我在哪里实现这个?

提前致谢!

2 个答案:

答案 0 :(得分:3)

如果您是新手,我建议您使用蛋糕烘焙实用程序来检查您的表格,询问有关关系的一些问题,并为数据库中的所有基本创建,更新和删除操作构建模型,控制器和视图。然后,您可以根据需要修改它们。这就是我如何节省大量时间。

答案 1 :(得分:1)

您希望将学生ID和课程ID发送到saveAll()方法。您可以通过您的课程控制器执行以下操作:

<?php
class CoursesController extends AppController {

    public function join($courseId) {
        $data = array(
            'Course' => array(
                'id' => $courseId
            ),
            'Student' => array(
                'id' => $this->Auth->user('id') // ID of logged in user
            )
        );

        if ($this->Course->saveAll($data)) {
            $this->Session->setFlash( __('Successfully joined course.'));
        }
        else {
            $this->Session->setFlash( __('Error joining course.'));
        }

        $this->redirect('/');
    }
}

这只是一个简单的例子。您需要将其调整到您的应用程序,并添加任何验证等。