Yii2 中如何使用查询
How the query used in Yii2
你能帮帮我吗。我想点赞example but on my source code it becomes empty 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 让您的生活更轻松。
你能帮帮我吗。我想点赞example but on my source code it becomes empty 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 让您的生活更轻松。