如何在Yii2中使用查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Yii2中使用查询相关的知识,希望对你有一定的参考价值。

你能帮助我吗。我想要example,但在我的源代码上它变成空emty。我的项目中的查询或源代码是什么?谢谢。

在控制器中

public function actionView($id)
{
    $con = Yii::$app->db;
    $sql = $con->createCommand("SELECT * FROM track where collecting_id=$id ORDER BY collecting_id desc");
    $posts = $sql->query();
    return $this->render('view', [
        'model' => $this->findModel($id),
        'posts' => $posts,
    ]);
}

在视图中

<div class="timeline__items">
<?php
foreach($posts as $row)
{
?>
<div class="timeline__item">
   <div class="timeline__content">
   <h2><?php echo $row['status']; ?></h2>
   <p><?php echo $row['tanggal']; ?></p>
</div>
</div>
<?php
}
?>
</div>

如果查询中的$ id替换为'PMUEI',则结果为result

使用ActiveDataProvider

public function actionView($id)
    {
        $model = $this->findModel($id);
        $hotel = Track::find()->where(['collecting_id' => $model->collecting_id]);
        $posts = new ActiveDataProvider([
            'query' => $hotel,
        ]);
        // $con = Yii::$app->db;
        // $sql = $con->createCommand(
        // "SELECT * FROM track where collecting_id=:collecting_id ORDER BY collecting_id desc",
        // [':collecting_id' => '$id']
        // );
        // $posts = $sql->queryAll();
        return $this->render(
        'view', [
            'model' => $this->findModel($id),
            'posts' => $posts,
        ]);
    }

结果是error

答案

将列与用户提供的任何此类输入进行比较时可以很好地绑定参数,或者可以由用户编辑,就像您在$id中作为参数传递的actionView()一样。然后你需要使用queryAll()queryOne(),以防你想要返回多行或单行。

因此,您应该将查询更改为以下内容

public function actionView($id)
{
    $con = Yii::$app->db;
    $sql = $con->createCommand(
        "SELECT * FROM track where collecting_id=:collecting_id ORDER BY collecting_id desc",
        [':collecting_id' => $id]
    );
    $posts = $sql->queryAll();
    return $this->render(
        'view', [
            'model' => $this->findModel($id),
            'posts' => $posts,
        ]
    );
}

除上述之外,您应该使用ActiveRecord。 Active Record提供了一个面向对象的接口,用于访问和操作存储在数据库中的数据。阅读Here让您的生活更轻松。

以上是关于如何在Yii2中使用查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 YII2 ActiveRecord 查询中说 (a AND b) OR (c AND d)?

YII2如何使用查询生成器更新字段

你如何在 python 中处理 graphql 查询和片段?

如何将 DAO 查询转换为 Yii2 ActiveRecord。如何从连接表中选择和使用特定列

如何在 YII2 中使用非空条件

如何将原始 SQL 转换为 Yii2,如查找查询