hola comunidad estoy tratando de implementar el uso de query, para ello estudie la guia en el conastructor de consultas, pero hoy me da un error:
tengo dos tablas, datossal y entiades con estos campos necesarios:
- datossal:
Idn int llave principal
entidad_id varchar 12
- entidades:
CodUEB varchar 12 llsve principal (relacionada con datossal uno a muchos)
Cod int
aqui tengo varias entidades ejemplo:
CodUEB Cod
…
0161203 3
0161204 4
…
en el controlador estoy implementando una cadena en la accion create como sigue:
public function actionCreate() {
$model = new Datossal;
// $sql = 'SELECT CodUEB, Cod, NEnt FROM entidades, datossal where entidades.CodUEB = datossal.entidad_id';
// $ent = Entidades::findBySql($sql)->one();
utlizo esta o la de arriba puesta con //
$ent = Entidades::find()->one();
if ($model->load(Yii::$app->request->post()) && $model->save() && $model->validate()) {//
$fecha = date("y");
$cadena1 = $ent->Cod;
$cadena3 = "_";
$cadena4 = $model->Idn; /
$cadena5 = "0";
$cadena6 = "00";
$cadena7 = "000";
$cadena8 = "MN";
//llenar numero de factura
// $criteria = new yii\db\ActiveQuery;
$criteria = yii\db\ActiveRecord::find('Idn=:Idn');
$criteria->params = array(':Idn' => $model->Idn);
$objFact = Datossal::find($criteria)->asArray()->all();
if ($model->Idn <= 9) {
$model->nfactura = $fecha . $cadena8 . $cadena3 . $cadena7 . $cadena4;
} elseif ($model->Idn >= 10 & $model->Idn <= 99) {
$model->nfactura = $fecha . $cadena8 . $cadena3 . $cadena6 . $cadena4;
} elseif ($model->Idn >= 100 & $model->Idn <= 999) {
$model->nfactura = $fecha . $cadena1 . $cadena8 . $cadena3 . $cadena5 . $cadena4;
} elseif ($model->Idn >= 1000) {
$model->nfactura = $fecha . $cadena8 . $cadena3 . $cadena4;
}
$model->fecha_c = date('Y-m-d_h.i.s'); /
$model->save();
Yii::$app->getSession()->setFlash('success', 'Factura realizada satisfactoriamente.');
return $this->redirect(['index', 'id' => $model->Idn]);
} elseif (!Yii::$app->request->isPost) {
$model->load(Yii::$app->request->get());
}
return $this->render('create', ['model' => $model]);
}
el objetivo es que me llene el numero de factura automaticamente tomando los valores de la cadena, por ejemplo de esta forma: 184MN_0085, segun valores, pero el caso es que como esta la $cadena1, me toma como es logico el primer valor de la primera entidad que encuentra en la tabla entidades, si cambio one() por all(), entonces me da este error:
PHP Notice – yii\base\ErrorException
Trying to get property 'Cod' of non-object
al leer aqui
$cadena1 = $ent->Cod;
, realmente no se como implementar esta consulta, ya probe con varias formas de consultas segun la guia y con ninguna me resulta, necesito sus colaboraciones para resolver esto.