将原始SQL传递给yii2 active dataProvider

杰夫

我正在通过yii2 create命令传递原始sql,但我总是会收到属性错误,必须是实现QueryInterface的类的实例,例如yii \ db \ Query或其子类

这是代码

      $sql ="
        SELECT
    tblpritems.PRlineID
    , tblpritems.Tracking_Code
    , tblpritems.Description
    , tblpritems.Quantity
    , tblpritems.Unit_Price
    , tblpritems.Extended_price
    , tblpritems.PRID
    , tblpritems.pr_solicitation_id
    , tblpritems.date_item_received
    , tblpritems.Quantity_received
    , tblpritems.Remarks_on_receipt
    , tblpritems.Received_by

FROM
    prts.tblpritems
    INNER JOIN prts.tblpr 
        ON (tblpritems.PRID = tblpr.PRID)
    INNER JOIN prts.tblprsolicitations 
        ON (tblprsolicitations.PRID = tblpr.PRID) AND (tblpritems.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblprsuppliers 
        ON (tblprsuppliers.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblpo 
        ON (tblpo.pr_supplier_id = tblprsuppliers.pr_supplier_id)
  where tblpr.PRID=".$val." and tblpo.PO_Status_ID=7 and item_received_status=0
    ";

    $connection = Yii::$app->getDb();
    $command = $connection->createCommand($sql);
    $result = $command->query();


    $dataProvider = new ActiveDataProvider([
        'query' => $result,
    ]);

当我尝试var_dump($ dataProvider)多数民众赞成在它返回错误时

scaisEdge

如果要使用原始sql,则应使用sqlDatProvider http://www.yiiframework.com/doc-2.0/guide-output-data-providers.html#sql-data-provider

    $sql ="
        SELECT
    tblpritems.PRlineID
    , tblpritems.Tracking_Code
    , tblpritems.Description
    , tblpritems.Quantity
    , tblpritems.Unit_Price
    , tblpritems.Extended_price
    , tblpritems.PRID
    , tblpritems.pr_solicitation_id
    , tblpritems.date_item_received
    , tblpritems.Quantity_received
    , tblpritems.Remarks_on_receipt
    , tblpritems.Received_by

FROM
    prts.tblpritems
    INNER JOIN prts.tblpr 
        ON (tblpritems.PRID = tblpr.PRID)
    INNER JOIN prts.tblprsolicitations 
        ON (tblprsolicitations.PRID = tblpr.PRID) AND (tblpritems.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblprsuppliers 
        ON (tblprsuppliers.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblpo 
        ON (tblpo.pr_supplier_id = tblprsuppliers.pr_supplier_id)
  where tblpr.PRID=".$val." and tblpo.PO_Status_ID=7 and item_received_status=0
    ";


 $sqlCount = "
        SELECT
    count(*)

FROM
    prts.tblpritems
    INNER JOIN prts.tblpr 
        ON (tblpritems.PRID = tblpr.PRID)
    INNER JOIN prts.tblprsolicitations 
        ON (tblprsolicitations.PRID = tblpr.PRID) AND (tblpritems.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblprsuppliers 
        ON (tblprsuppliers.pr_solicitation_id = tblprsolicitations.pr_solicitation_id)
    INNER JOIN prts.tblpo 
        ON (tblpo.pr_supplier_id = tblprsuppliers.pr_supplier_id)
  where tblpr.PRID=".$val." and tblpo.PO_Status_ID=7 and item_received_status=0
    ";


    $count = Yii::$app->db->createCommand($sqlCount)->queryScalar();

    $provider = new SqlDataProvider([
    'sql' => $sql,
    'params' => [':status' => 1],
    'totalCount' => $count,
    'pagination' => [
        'pageSize' => 10,
    ],
    'sort' => [
        'attributes' => [
              ......
        ],
    ],
]);

否则,如果您想使用activeDataProvider,则可以使用

假设activeRecord与Pritems模型相关

  $query  =  Pritems::findBySql($sql)


  $provider = new ActiveDataProvider([
    'query' => $query,
    'pagination' => [
        'pageSize' => 10,
    ],
    'sort' => [
        'defaultOrder' => [
             ....
        ]
    ],
]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Yii Dataprovider日期排序

来自分类Dev

Yii CgridView DataProvider错误

来自分类Dev

Yii dataprovider 3表

来自分类Dev

Yii Dataprovider日期排序

来自分类Dev

Yii2:如何使用$ dataprovider返回JSON

来自分类Dev

Yii2:单击按钮更改Gridviews的DataProvider

来自分类Dev

未定义的变量:yii2中的dataProvider

来自分类Dev

带有分页的yii2 dataprovider getcount

来自分类Dev

是否可以将参数传递给TestNG的@DataProvider?

来自分类Dev

TestNG:将参数从Maven传递到DataProvider

来自分类常见问题

使用DataProvider传递lambda作为testng参数?

来自分类Dev

testng @dataprovider 传递多个类实例

来自分类Dev

在TestNG的PageObjectModel中使用dataprovider传递数据

来自分类Dev

将CASE查询的SQL转换为Yii2 Active Record

来自分类Dev

使用dataprovider时如何在yii2弹性搜索中使用random_score

来自分类Dev

未定义变量:yii2 kartik 网格中的 dataProvider

来自分类Dev

仅使用一个dataprovider,如何将数据传递给多种测试方法

来自分类Dev

如何使用CDataProvider在Yii中创建自己的DataProvider?

来自分类Dev

如何在Yii中使用CListView自定义dataProvider

来自分类Dev

如何使用CDataProvider在Yii中创建自己的DataProvider?

来自分类Dev

如何将TestNG @DataProvider迁移到JUnit Jupiter @ParameterizedTest

来自分类Dev

如何配置PHPUnit将dataprovider错误视为失败而不是警告?

来自分类Dev

AmCharts dataLoader不会加载数据,而是将数据粘贴到dataProvider中并使用dataProvider可以正常工作

来自分类Dev

如何将“自然联接”转换为yii2 Active查询?

来自分类Dev

active form multi model and multi attributes in Yii2

来自分类Dev

Active Record中的Yii2子查询

来自分类Dev

Yii2 Active Record:显示相关记录的最佳方法

来自分类Dev

Yii2 Active Record的“ with”关系不返回子数据

来自分类Dev

Yii2 Active Record:显示相关记录的最佳方法

Related 相关文章

  1. 1

    Yii Dataprovider日期排序

  2. 2

    Yii CgridView DataProvider错误

  3. 3

    Yii dataprovider 3表

  4. 4

    Yii Dataprovider日期排序

  5. 5

    Yii2:如何使用$ dataprovider返回JSON

  6. 6

    Yii2:单击按钮更改Gridviews的DataProvider

  7. 7

    未定义的变量:yii2中的dataProvider

  8. 8

    带有分页的yii2 dataprovider getcount

  9. 9

    是否可以将参数传递给TestNG的@DataProvider?

  10. 10

    TestNG:将参数从Maven传递到DataProvider

  11. 11

    使用DataProvider传递lambda作为testng参数?

  12. 12

    testng @dataprovider 传递多个类实例

  13. 13

    在TestNG的PageObjectModel中使用dataprovider传递数据

  14. 14

    将CASE查询的SQL转换为Yii2 Active Record

  15. 15

    使用dataprovider时如何在yii2弹性搜索中使用random_score

  16. 16

    未定义变量:yii2 kartik 网格中的 dataProvider

  17. 17

    仅使用一个dataprovider,如何将数据传递给多种测试方法

  18. 18

    如何使用CDataProvider在Yii中创建自己的DataProvider?

  19. 19

    如何在Yii中使用CListView自定义dataProvider

  20. 20

    如何使用CDataProvider在Yii中创建自己的DataProvider?

  21. 21

    如何将TestNG @DataProvider迁移到JUnit Jupiter @ParameterizedTest

  22. 22

    如何配置PHPUnit将dataprovider错误视为失败而不是警告?

  23. 23

    AmCharts dataLoader不会加载数据,而是将数据粘贴到dataProvider中并使用dataProvider可以正常工作

  24. 24

    如何将“自然联接”转换为yii2 Active查询?

  25. 25

    active form multi model and multi attributes in Yii2

  26. 26

    Active Record中的Yii2子查询

  27. 27

    Yii2 Active Record:显示相关记录的最佳方法

  28. 28

    Yii2 Active Record的“ with”关系不返回子数据

  29. 29

    Yii2 Active Record:显示相关记录的最佳方法

热门标签

归档