php - relaciones - yii2 query builder
obtener resultados de consulta de cdbcommand Yii (4)
public function getQuotes()
{
$data = Yii::app()->db->createCommand(''Select fromm from city_fare_final'');
$data->queryRow();
return $data ;
}
Your getQuotes () return Object of class CDbCommand
:
+ You returned $data in the function instead of $data->queryRow().
Por cierto, no puedes usar echo
para datos de array
. El siguiente ejemplo se usa para obtener datos de DB para ver usando DAO con Yii: supongo que tiene el modelo de persona y el controlador de persona
En su modelo de persona:
function getData() {
$sql = "SELECT * from Person";
$data = Yii::app()->db
->createCommand($sql)
->queryAll();
return $data;
}
En tu controlador:
function index(){
$data = Person::model()->getData();
$this->render(''your_view'',array(
''data''=>$data,
));
}
Desde su punto de vista: puede foreach
sus datos para hacer eco de elementos en la array
datos:
<?php foreach($data as $row): ?>
//show something you want
<?php echo $row->name; ?>
<?php endforeach; ?>
He estado tratando de obtener los resultados de mi consulta durante las últimas dos horas, en mi modelo tengo este
public function getQuotes()
{
$data = Yii::app()->db->createCommand(''Select fromm from city_fare_final'');
$data->queryRow();
return $data ;
}
en el controlador
public function actionIndex()
{
// renders the view file ''protected/views/site/index.php''
// using the default layout ''protected/views/layouts/main.php''
$model=new QuoteForm();
if(isset($_POST[''QuoteForm'']))
{
$model->attributes=$_POST[''QuoteForm''];
if ($model->validate())
{
$priceTable=new CityFareFinal;
$priceTable->fromm=$model->pickupL;
$priceTable->too=$model->dropoffL;
$priceTable->type_of_car=$model->type;
this->render(''result'',array(''model''=>$priceTable))
}
}
else
{
$this->render(''index'',array(''model''=>$model));
}
}
y en la vista
<div id="moduleResult">
<span><?php echo $model->getQuotes() ;?><------ Here</span>
</div>
pero siempre me da un error que dice "Objeto de la clase CDbCommand no se pudo convertir a cadena", ¿qué puedo hacer para obtener los resultados de mi consulta realizada en el modelo?
Saludos Gabriel
debajo del código de muestra para recorrer las filas devueltas por queryAll
$connection = Yii::app()->db;
$command = $connection->createCommand("Select * from table");
$caterow = $command->queryAll(); //executes the SQL statement and returns the all rows
foreach($caterow as $retcat )
{
echo $retcat["ColumnName"] ;
}
Devuelve una Arrary de filas con campos
Model: Notices.php:
---------------------------------
public function getNoticesBlog($offset = 0){
$dataResult = Yii::app()->db->createCommand()->select(''*'')->from($this->tableName())
->andWhere("delete_flg=:delete_flg",array('':delete_flg''=>0))
->andWhere("publish=:publish",array('':publish''=>1))
->limit(3)->offset($offset)->order(''created_on DESC'')->queryAll();
return $dataResult;
}
Controlador: NoticesController.php
$firstNotices = Notices::model()->getNoticesBlog(0);
$secondNotices = Notices::model()->getNoticesBlog(3);
$thirdNotices = Notices::model()->getNoticesBlog(6);
$this->render(''Notices'',array(
''firstNotices''=>$firstNotices,
''secondNotices''=>$secondNotices,
''thirdNotices''=>$thirdNotices,
)
);
$data->queryRow();
devuelve resultado en formato de matriz. Su código devuelve $data
que es un objeto que no es resultado de una consulta. Es por eso que está obteniendo este error.
Si desea obtener un valor único, puede usar $ data-> queryScalar ();
En caso de queryRow()
su código será
public function getQuotes()
{
$data = Yii::app()->db->createCommand(''Select * from city_fare_final'');
$result = $data->queryRow();
return $result ; //this will return result in array format (single row)
}
para un solo valor de campo tu código será
public function getQuotes()
{
$data = Yii::app()->db->createCommand(''Select xyz from city_fare_final'');
$result = $data->queryScalar();
return $result; //return single value of xyz column
}
Espero que esto sea de ayuda.