update relaciones query framework createcommand consultas app php yii

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.