Yii Relation Has_Many Filtering

时间:2016-06-25 00:53:36

标签: php activerecord yii

我目前有2个数据库表,一个包含一个节目列表,另一个包含这些节目所在的时间。

所以我在两者之间有一个HAS_MANY关系。

我已经成功地通过HAS_MANY关系完成了电影及与之相关的时间。

我正在努力解决的部分是我要展示有时候反对他们的前10部电影(有些则没有)。下面的代码只是将前10个与他们是否有时间对抗它们无关:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /category.php?u=$1&limit=$2&page=$3&style=$4 [NC,L]

我正在使用的HAS_MANY关系是:

$films=filmrecord::model()
     ->findAll(array(
         'order' => 'priority',
         'limit' => 10
     ));

foreach ($films as $thefilm) {
        array_push($filmListings, array(
            'id' => $thefilm->id,
            'title' => $thefilm->title,
            'url' => $thefilm->url,
            'poster_url' => $thefilm->p_url,
            'times' => $thefilm->filmtimes
        ));
 }

return filmListings;

我知道我可以简单地输入一个if语句来检查是否设置了$ thefilm-> filmtimes但是理想情况下我想在db点检查以避免在检查之前拔出所有电影。

我有没有办法在findAll中存在关系?

任何指针都会非常感激。

此致 wizzer

1 个答案:

答案 0 :(得分:0)

请尝试此解决方案,使用has_many关系查找所有带有电影时间记录的电影。

'filmtimes' => array(self::HAS_MANY, 'FilmsTimesRecord', 'film_id')

$films=filmrecord::model()->with('filmtimes')->findAll(array('order' => 'priority','limit' => 10));