Problemas al ejecutar una consulta


(Rafael Rosales) #1

hola a todos comunidad, me esta sugiendo un error al ejecutar una consulta, tengo una tabla productos, la cual ejecuto con la consulta:


$codigo = $_POST['incodigo'];

$producto = Productos::model()->findByPk((string) $codigo);

en una accion del controlador, esta lee los resultados necesarios, me lee y muestra todos los campos de la tabla, seguidamente ejecuto una consulta en la misma accion, esta es la consulta:


$query = Yii::app()->db->createCommand()

                ->select('a.CodPVen')

                ->from('submayor a')

                ->join('subproductos s', 's.Codpro=a.Codpro')

                ->where('a.Codpro=:Codpro', array(':Codpro' => $producto->CodSubp))

                ->queryRow();

aqui en la consulta intento obtener los valores de los campos de la tabla submayor, para ello tengo lo siguiente:

tabla productos campo CodSubp, entre otros.

tabla subproductos campo Codpro, entre otros, Codpro es clave principal y esta realacionada con la tabla productos uno a varios con CodSubp.

tabla submayor campo Codpro, CodPVen, entre otros Codpro esta relacionada con Codpro de la tabla subproductos uno a varios, o sea puedo tener un Codpro para varios CodPVen.

Esta es la accion del controlador:


 public function actionObtenerProducto() {

        $codigo = $_POST['incodigo'];

        $destino = $_POST['idde'];

        $producto = Productos::model()->findByPk((string) $codigo);

      $query = Yii::app()->db->createCommand()

                ->select('a.CodPVen')

                ->from('submayor a')

                ->join('subproductos s', 's.Codpro=a.Codpro')

                ->where('a.Codpro=:Codpro', array(':Codpro' => $producto->CodSubp))

                ->queryRow();

      

        $producmayor = Submayor::model()->find('Codpro=:Codpro and CodPVen=:CodPVen', array(':Codpro' => $producto->CodSubp, ':CodPVen' => $query->CodPVen));

        

        if ($producto->Codde <> $_POST['idde'])

            echo "error";

        else

            echo CJSON::encode(array(

                'descripcion' => $producto->NProductos,

                'codigo' => $producto->Codprod,

                'preciomn' => $producto->PreMay,

                'existencia' => $producmayor->SaldoAct,

                'preciocuc' => $producto->PrCUC,

                'Idum' => $producto->UM,

                'CodPVen' => $producmayor->CodPVen,

            ));

    }

el objetivo es que al introducir un codigo de un producto de la tabla productos me lea la consulta $producmayor, y luego me muestre todos los valores del array del CJSON.

Pero al hacerlo me dice que esta intentado leer esto $query->CodPVen y no es un objeto, o sea que no encuentra el valor, dando este error en al hacer el debug (F12):


PHP Error [8]


Trying to get property 'CodPVen' of non-object (D:\xampp\htdocs\SoftVentas\protected\controllers\PrefacturasController.php:182)


#0 D:\xampp\htdocs\SoftVentas\protected\controllers\PrefacturasController.php(182): CWebApplication->handleError()

#1 D:\xampp\htdocs\framework\web\actions\CInlineAction.php(50): PrefacturasController->actionObtenerProducto()

#2 D:\xampp\htdocs\framework\web\CController.php(309): CInlineAction->runWithParams()

#3 D:\xampp\htdocs\framework\web\filters\CFilterChain.php(134): PrefacturasController->runAction()

#4 D:\xampp\htdocs\framework\web\filters\CFilter.php(41): CFilterChain->run()

#5 D:\xampp\htdocs\framework\web\CController.php(1146): CAccessControlFilter->filter()

#6 D:\xampp\htdocs\framework\web\filters\CInlineFilter.php(59): PrefacturasController->filterAccessControl()

#7 D:\xampp\htdocs\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter()

#8 D:\xampp\htdocs\framework\web\CController.php(292): CFilterChain->run()

#9 D:\xampp\htdocs\framework\web\CController.php(266): PrefacturasController->runActionWithFilters()

#10 D:\xampp\htdocs\framework\web\CWebApplication.php(283): PrefacturasController->run()

#11 D:\xampp\htdocs\framework\web\CWebApplication.php(142): CWebApplication->runController()

#12 D:\xampp\htdocs\framework\base\CApplication.php(162): CWebApplication->processRequest()

#13 D:\xampp\htdocs\SoftVentas\index.php(29): CWebApplication->run()

necesto alguna sugerencia para resolver esta consulta