【问题标题】:Yii criteria issue with selecting values from foreign tables从外部表中选择值的 Yii 标准问题
【发布时间】:2013-07-09 13:21:55
【问题描述】:

您好,我想从表中选择以下带下划线的值。我尝试过但它不起作用....

$criteria = new CDbCriteria;       

    $criteria->select = array('description', 'id','rate','item_unit_id');
    $criteria->with=array("item_unit","color");
    $criteria->together = true; 
    $criteria->addSearchCondition("description", $_GET['query']);

    $criteria->limit = $this->limit;

    $items = Item::model()->findAll($criteria);
    $suggestions = array();
    $x=0;
    foreach ($items as $c) {
        $suggestions[$x]['value'] = $c->description;
        $suggestions[$x]['id'] = $c->id;
        $suggestions[$x]['rate'] = $c->rate;
        $suggestions[$x]['unit'] = $c->item_unit->name;
        $x++;
    }

【问题讨论】:

    标签: php activerecord yii criteria


    【解决方案1】:

    好吧,如果你读过文档你就会知道,但是因为你没有读过,所以你不会:)

    不过,这可能会对您有所帮助:

    $criteria->select = 't.id, t.description, t.rate, t.code, color.name, item_unit.name';
    $criteria->with = array(
        "item_unit" => array(
            'together' => true,
            'joinType' => 'INNER JOIN'
        ),
        "color" => array(
            'together' => true,
            'joinType' => 'INNER JOIN',
        )
    ); 
    
    $criteria->addSearchCondition("t.description", $_GET['query']);
    $criteria->limit = $this->limit;
    
    $items = Item::model()->findAll($criteria); 
    

    【讨论】:

    • 兄弟,它给出了这个错误......关系“item_unit”未在活动记录类“Item”中定义。
    • 好吧,定义关系,这不是很明显吗?或者更好的是,开始阅读 Yii 用户指南,你还没有准备好使用 Yii。
    • 感谢朋友,它应该是 'itemUnit' 而不是 'item_unit'...现在可以正常工作了 :)
    • 我有一个问题...为什么在此使用 INNER JOIN...没有它也可以
    • 因为默认是LEFT OUTER JOIN,如果你知道两者之间的区别,你就知道为什么需要INNER JOIN而不是LEFT/RIGHT加入,基本上这可以确保你得到记录仅当它们存在于所有联接表中时。
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2016-05-31
    • 2018-09-23
    相关资源
    最近更新 更多