功夫熊猫 2012-03-14 22:51:07 2923次浏览 9条回复 0 0 0

刚学php, yii 应该怎么实现这样的view. ClistView ? CGridView ? 给个思路,或者例子吧。

谢谢。

[attach]669[/attach]

  • 回复于 2012-03-15 09:42 举报

    ClistView吧

  • 回复于 2012-03-15 13:11 举报

    可以自己写view

  • 回复于 2012-03-15 14:53 举报

    能不能在具体点,
    假设有3表,channel, program, schedule.

    Select all from channel,把频道的数据,做data,传给CList.

    自己写个itemview,付给CList.

    问题来了,对每个itemview,需要 select all from schedule join program on programid where channelid.
    就是需要根据当前频道,从数据库里找到program info 和时间的信息,传给itemview.
    这一部分,应该在那里做?itemview没有controller.

    谢谢,

    越具体越好,有例子更好。

  • 回复于 2012-03-15 15:03 举报

    Select all from channel,把频道的数据,做data,传给CList.
    这个思路会造成后面困扰你的问题,应该在model内把要显示的数据准备好,再传给CListView,
    如果用AR方式实现,要在三个model里把关系设置好,如果DAO方式就把你的sql写完整,读取出所有需要的数据。

    关于AR方式中表关系的实现,可以参考:
    http://www.yiichina.com/doc/guide/1.1/database.arr

    另:如果按照你本来的思路,也是可以的,但仍然需要把model的关系配置好,希望你能学习一下上面的参考

  • 回复于 2012-03-15 17:11 举报

    非常感谢你的回复。
    我不会写那么复杂的query, 好像需要左join和右join.
    我只会写下面的。

    帮我看看这个query应该怎么写。十分感谢。

    那么在我的

    actionIndex() {
        $criteria = new CDbCriteria();
        $criteria->join = "
        JOIN ( schedule
            JOIN (program
            ON schedule.program_id.=program.id
        ) ON channel.id=schedule.channel_id;
    
        $dataProvider=new CActiveDataProvider('Channel', array(
            'criteria' => $criteria,
        ));
        $this->render ('index',array(
            'dataProvider'=>$dataProvider,
        ));   
    }
    

    [attach]670[/attach]

  • 回复于 2012-03-15 17:53 举报

    不是很清楚你的数据结构是否和你的数据库描述一致,

    可以试一下:

    left outer join program P on t.id = channel_id
    right outer join schedule S on P.id = S.program_id
    
  • 回复于 2012-03-15 18:50 举报

    非常,非常感谢,it works。
    能不能在再问一个问题。
    我有两个时间string,
    StartDateTime="2012-01-15T00:00:00"
    StartOffset="PT0H29M44S"

    我怎么才能把他们两个加起来显示。
    在数据库里,
    我把"2012-01-15T00:00:00" 转成了unixtime. 1326585600 然后按字符串存的。
    "PT0H29M44S", 我不会转,就直接存字符串。
    现在我需要把它们加起来显示。

    谢谢。

  • 回复于 2012-03-15 19:53 举报

    以解决。谢谢。。。。

  • 回复于 2012-03-16 15:12 举报

    就是 表 join 连接起来 on 条件 查询就可以了。SQL 应该还是要多看看的。

您需要登录后才可以回复。登录 | 立即注册