php - tutorial - yii3




Abfrageergebnisse von cdbcommand Yii erhalten (3)

Ich habe versucht, die Ergebnisse meiner Abfrage für die letzten zwei Stunden zu bekommen, in meinem Modell habe ich das

public function getQuotes()
        {            
            $data = Yii::app()->db->createCommand('Select fromm from city_fare_final');            
            $data->queryRow();            
            return $data ;
        }

in der Steuerung

    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));                
            }
}

und in der Aussicht

    <div id="moduleResult">                          
        <span><?php echo $model->getQuotes() ;?><------ Here</span>
    </div>     

aber es gibt mir immer einen Fehler, der besagt "Objekt der Klasse CDbCommand konnte nicht in String konvertiert werden", was kann ich tun, um die Ergebnisse meiner Abfrage im Modell zu erhalten ???

Grüße Gabriel

https://code.i-harness.com


public function getQuotes()
        {            
            $data = Yii::app()->db->createCommand('Select fromm from city_fare_final');            
            $data->queryRow();            
            return $data ;
        }

Ihr getQuotes () gibt das Object of class CDbCommand :

+ You returned $data in the function instead of $data->queryRow(). 

Übrigens können Sie kein echo für array Daten verwenden. Das folgende Beispiel wird zum Abrufen von Daten aus der Datenbank verwendet, um mithilfe von DAO mit Yii anzuzeigen: Ich nehme an, dass Sie über das Personenmodell und den Personencontroller verfügen

In Ihrem Personenmodell:

function getData() {
    $sql = "SELECT * from Person";

    $data = Yii::app()->db
        ->createCommand($sql)
        ->queryAll();
    return $data;
}

In Ihrem Controller:

function index(){
    $data =  Person::model()->getData();

    $this->render('your_view',array(
    'data'=>$data,
    ));
}

Aus Ihrer Sicht: Sie können Ihre Daten dazu bringen, Elemente in den array Daten zu array :

<?php foreach($data as $row): ?>
     //show something you want 
     <?php echo $row->name; ?>
<?php endforeach; ?>

unterhalb des Beispielcodes, um die von queryAll zurückgegebenen Zeilen zu durchlaufen

$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"]  ;
}

Gibt die Reihenfolge der Zeilen mit Feldern zurück


$data->queryRow(); gibt das Ergebnis im Array-Format zurück. Ihr Code gibt $data zurück, $data denen es sich um ein Objekt handelt, das kein Ergebnis der Abfrage ist. Deshalb erhalten Sie diesen Fehler.

Wenn Sie einen einzelnen Wert abrufen möchten, können Sie $ data-> queryScalar ();

Im Falle von queryRow() Ihr Code sein

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)
    }

Für einen einzelnen Feldwert wird der Code sein

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
    }

Ich hoffe, das wird helfen.





yii