zcyxm 2012-12-05 18:35:26 2828次浏览 7条回复 0 0 0

如果表 A 和 B 之间的关系是一对多(HAS_MANY),则 A 有多个 B (例如user可以有多个post)

现在是这样的,我想,如果user没有post,我就不读取数据,如果有post就读取。就是说我想读取所有有post的user和包括user-》post的数据,用CDataProvider表示。

这个该怎么写?

  • 回复于 2012-12-06 13:18 举报

    如果user没有post,我就不读取数据,如果有post就读取。
    这不就是if语句吗?已经有思路了,

  • 回复于 2012-12-06 14:11 举报

    斑竹在哪里if判断呢?views里面么?我想到过在视图里面判断,但是我没测试,我总觉得有问题。比方说,需要翻页,每页3个,总共7个数据(其中6个有post,1个没有),也就是$dataProvider里面的数据是7条,6条我们需要,1条不需要。这种情况到底是三页还是两页呢?

    我希望的状态是不是应该是两页,可是,我害怕是三页。。。

  • 回复于 2012-12-06 15:24 举报

    可以直接在model里判断。
    不过,为什么要做这个呢?做什么应用呢?

  • 回复于 2012-12-06 16:08 举报

    model里面怎么判断呢?我想用$dataProvider读取数据哎

    需求是这样的,user表A,product表B,trade表C,A->B 一对多,B->C一对多。目前需要的数据是得到某个user的所有的product所有的交易信息。
    可能我没表达清楚,页面显示的是,[attach]1003[/attach]

    比方说,人有四个product,但是三个product都有交易情况,页面就显示了三个product的信息,然后三个product各自的交易信息都显示在该product信息之下。第四个product由于没有交易信息,所以不显示。

    哎,严重发现自己的沟通有障碍。。。。

  • 回复于 2012-12-06 19:24 举报

    只要在ralation里配置好了表关联,调用数据时,跟普通的AR没大区别的,可以$user->product->trade这样试试~
    不用管CActiveDataProvider,跟普通的用法没大区别。

  • 回复于 2012-12-20 11:17 举报

    第四个protected你没画出来吗

  • 回复于 2012-12-20 15:17 举报

    亲,没看明白你说的啥。

    我表达有问题。

    你看看这个问题“使用 AR的 relations 进行多表查询非常方便, 现在的问题是我要给用户一个搜索功能,要根据关联表的限制条件来查询当前 表的 数据。 请问下 怎么去写。 ”地址 http://www.yiiframework.com/forum/index.php?/topic/8325-yii-多表查询,如何写关联表的-条件/

    类似于这个写法$Art1s=Articles::model()->with('cate')->findAll(array('condition'=>'cate.id=2'));

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