使用innerJoin方法Yii2从MySQL数据库中检索数据

时间:2018-03-20 13:49:22

标签: php sql yii2

我正在尝试使用Yii2方法从DBA检索数据。我的问题是当我使用yii2查询构建器(如innerJoin)构建查询时,只返回与我开始的模型相关的列。

var $iframes = $('iframe[id^="idContenteditor_field_"]');

$iframes.each(function(index, item) {
    var $iframeBody = $(item).contents().find("body");
    $iframeBody.keyup(function(e) {

      if ($(this).find('.content').length === 0) {
        // add wrap
        var bodyContent = $(this).html();
        $(this).html('<div class="content">' + bodyContent + '</div>');
      } 

      var $contentBlock = $(this).find('.content');
      var bodyHeight = $contentBlock.outerHeight(); 
      $(item).height(bodyHeight); // set real height
    });
});

这是一个例子,我只收到与'CategoryOfItemsTrans'模型相关的列。我需要检索两个表的所有列。

2 个答案:

答案 0 :(得分:0)

你正在做的是做一个查询,它将为你提供一个类型&#34; CategoryOfItemsTrans&#34;的对象数组。而你需要的不是那个。 也就是说,你正在使用&#34; find&#34;模型的方法,所以它永远不会让你回到你期望的。

如果您希望收到一些列,则必须进行简单查询。 尝试那样

 $rows = (new \yii\db\Query())
            ->select(['ci.*', 'cit.*email'])
            ->from('category_of_items_trans as cit')
            ->innerJoin('category_of_items as 
                ci','category_of_items_trans.CATEGORY_OF_ITEM_ID = 
              category_of_items.CATEGORY_OF_ITEM_ID')
            ->where('category_of_items.CATEGORY_FLAG = \''.$CategoryFlag.'\' AND 
             category_of_items_trans.LANGUAGE_ID ='.$LanguageID)
            ->all();

答案 1 :(得分:0)

使用asArray(),您将获得数组结果。试试这个

$Categories =  CategoryOfItemsTrans::find()
        ->innerJoin('category_of_items','category_of_items_trans.CATEGORY_OF_ITEM_ID = category_of_items.CATEGORY_OF_ITEM_ID')
        ->where('category_of_items.CATEGORY_FLAG = \''.$CategoryFlag.'\' AND category_of_items_trans.LANGUAGE_ID ='.$LanguageID)
        ->asArray()
        ->all();