【问题标题】:CakePHP 2.1 pagination for habtm用于 habtm 的 CakePHP 2.1 分页
【发布时间】:2013-01-01 00:49:22
【问题描述】:

我正在使用 cakephp 2.1 并开发一个应用程序,其中包含以下表结构。

1. people(id, name)
2. movies(id, name)

和“人”habtm 电影的表格如下。

1. castsmovie(id, person_id, movie_id)
2. directorsmovie(id, person_id, movie_id)
3. moviesmusicdirector(id, person_id, movie_id)
4. moviesproducers(id, person_id, movie_id)
5. movieswriter(id, person_id, movie_id)
6. cinematographersmovie(id, person_id, movie_id)

我想为特定的人获取电影并为他分页电影。 所以我写的代码在控制器里

$this->paginate = array('Person' => array(
        'contain' => array(
                'CastsMovie' => array('Movie'),
                'DirectorsMovie' => array('Movie'),
                'MoviesProducer' => array('Movie'),
                'MoviesMusicDirector' => array('Movie')),
                'MoviesWriter' => array('Movie'),
                'CinematographersMovie' => array('Movie')
        ),
        'conditions' => array('Person.id' => $id)));

结果如下

    array(
(int) 0 => array(
    'Person' => array(
        'id' => '101',
        'name' => 'Darshan Thoogudeep',
    ),
    'CastsMovie' => array(
        (int) 0 => array(
            'id' => '53',
            'movie_id' => '14',
            'person_id' => '101',
            'order' => '1',
            'Movie' => array(
                'id' => '14',
                'name' => 'Krantiveera Sangolli Rayanna',
            )
        ),
        (int) 1 => array(
            'id' => '78',
            'movie_id' => '19',
            'person_id' => '101',
            'order' => '0',
            'Movie' => array(
                'id' => '19',
                'name' => 'Saarathi',
            )
        ),
        (int) 2 => array(
            'id' => '137',
            'movie_id' => '35',
            'person_id' => '101',
            'order' => '1',
            'Movie' => array(
                'id' => '35',
                'name' => 'BulBul',
            )
        ),
        (int) 3 => array(
            'id' => '153',
            'movie_id' => '42',
            'person_id' => '101',
            'order' => '0',
            'Movie' => array(
                'id' => '42',
                'name' => 'Viraat',
            )
        )
    ),
    'CinematographersMovie' => array(),
    'DirectorsMovie' => array(),
    'MoviesMusicDirector' => array(),
    'MoviesWriter' => array(),
    'MoviesProducer' => array()
)
 )

但是我想获取限制为 20 的特定人的所有电影.. 这样我就可以轻松地对每页中的电影限制进行分页.. 请帮我解决.. 工作更受赞赏。

【问题讨论】:

    标签: cakephp cakephp-2.1 has-and-belongs-to-many pagination


    【解决方案1】:

    我建议更改您的数据模型,以便您只有一个 HABTM 表:

    people_movies(id, person_id, movie_id,role_id) 
    

    您还需要一个角色表:

    role(id, role_name)
    

    然后您可以将它们全部存储在同一个表中,并在以后根据需要添加其他角色。

    使用这种方法,获取一个人的所有电影的查询会简单得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2011-08-05
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多