【问题标题】:Yii Relation Has_Many FilteringYii 关系 Has_Many 过滤
【发布时间】:2016-06-25 00:53:35
【问题描述】:

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

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

我已经成功地通过 HAS_MANY 关系提取了电影和与它们相关的时间。

我正在苦苦挣扎的部分是我想展示前 10 部对他们不利的电影(有些没有)。下面的代码只提取了前 10 个与他们是否有时间对抗的代码:

$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;

我使用的 HAS_MANY 关系是:

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

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

有什么方法可以让我在 findAll 中存在关系吗?

任何指针将不胜感激。

问候 巫师

【问题讨论】:

    标签: php activerecord yii


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多