浏览代码

creacion y actualizacion en migraciones

Jogibeda 8 月之前
父节点
当前提交
a35d3c83c0

+ 51 - 0
migrations/m240809_172822_obra.php

@@ -0,0 +1,51 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240809_172822_obra
+ */
+class m240809_172822_obra extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->createTable('Obra', [
+            "id" => $this->string(36),
+            "nombre" => $this->string(100)->notNull(),
+            "fechaInicio" => $this->timestamp()->append(" with time zone"),
+            "fechaFinal" => $this->timestamp()->append(" with time zone"),
+            "descripcion" => $this->string(100)->notNull(),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+        ]);
+
+        $this->addPrimaryKey('ObraPK', 'Obra', 'id');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropTable('Obra');
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240809_172822_obra cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 61 - 0
migrations/m240812_172947_HerramientaObra.php

@@ -0,0 +1,61 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240812_172947_HerramientaObra
+ */
+class m240812_172947_HerramientaObra extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->createTable('HerramientaObra', [
+            "id" => $this->string(36),
+            "idEmpleado" => $this->string(36),
+            "idHerramienta" => $this->string(36),
+            "idObra" => $this->string(36),
+            "comentario" => $this->string(100),
+            "creado" => $this->timestamp()->append(" with time zone"),
+            "modificado" => $this->timestamp()->append(" with time zone"),
+            "eliminado" => $this->timestamp()->append(" with time zone"),
+          ]);
+          $this->addPrimaryKey("HerramientaObraPK", "HerramientaObra", "id");
+    
+          $this->addForeignKey("HerramientaObraEmpleadoFK", "HerramientaObra", "idEmpleado", "Empleado", "id");
+          $this->addForeignKey("HerramientaObraHerramientaFK", "HerramientaObra", "idHerramienta", "Herramienta", "id");
+          $this->addForeignKey("HerramientaObraObraFK", "HerramientaObra", "idObra", "Obra", "id");
+ 
+        }
+
+  
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropForeignKey("HerramientaObraEmpleadoFK", "HerramientaObra");
+        $this->dropForeignKey("HerramientaObraHerramientaFK", "HerramientaObra");
+        $this->dropForeignKey("HerramientaObraObraFK", "HerramientaObra");
+
+        $this->dropTable('HerramientaObra');
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240812_172947_HerramientaObra cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 48 - 0
migrations/m240812_193854_rename_tipo_to_idTipo_and_add_foreign_key.php

@@ -0,0 +1,48 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240812_193854_rename_tipo_to_idTipo_and_add_foreign_key
+ */
+class m240812_193854_rename_tipo_to_idTipo_and_add_foreign_key extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->renameColumn('Servicio', 'tipo', 'idTipo');
+
+        
+        // Agregar la llave foránea a "idTipo" que hace referencia a la columna "id" en la tabla "related_table"
+        $this->addForeignKey("ServicioTipoFK", "Servicio", "idTipo", "TipoServicio", "id");
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropForeignKey('ServicioTipoServicioFK', 'Servicio');
+
+
+        // Renombrar la columna "idTipo" de vuelta a "tipo"
+        $this->renameColumn('Servicio', 'idTipo', 'tipo');
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240812_193854_rename_tipo_to_idTipo_and_add_foreign_key cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 56 - 0
migrations/m240813_184024_actualizacion_de_Vehiculo.php

@@ -0,0 +1,56 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m240813_184024_actualizacion_de_Vehiculo
+ */
+class m240813_184024_actualizacion_de_Vehiculo extends Migration
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->renameColumn('Vehiculo', 'color', 'idColor');
+        $this->renameColumn('Vehiculo', 'tipo', 'idTipo');
+        $this->renameColumn('Vehiculo', 'marca', 'idMarca');
+        
+        // Agregar la llave foránea a "idTipo" que hace referencia a la columna "id" en la tabla "related_table"
+        $this->addForeignKey("VehiculoColorFK", "Vehiculo", "idColor", "Color", "id");
+        $this->addForeignKey("VehiculoTipoFK", "Vehiculo", "idTipo", "TipoAuto", "id");
+        $this->addForeignKey("VehiculoMarcaFK", "Vehiculo", "idMarca", "Marca", "id");
+    
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropForeignKey('VehiculoColorFK', 'Vehiculo');
+        $this->dropForeignKey('VehiculoTipoFK', 'Vehiculo');
+        $this->dropForeignKey('VehiculoMarcaFK', 'Vehiculo');
+        // Renombrar la columna "idTipo" de vuelta a "tipo"
+        $this->renameColumn('Vehiculo', 'idTipo', 'tipo');
+        $this->renameColumn('Vehiculo', 'idMarca', 'marca');
+        $this->renameColumn('Vehiculo', 'idColor', 'color');
+
+
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m240813_184024_actualizacion_de_Vehiculo cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}

+ 96 - 0
models/HerramientaObra.php

@@ -0,0 +1,96 @@
+<?php
+namespace app\models;
+use Yii;
+
+/**
+ * This is the model class for table "HerramientaObra"
+ * 
+ * @property string $id
+ * @property string $idEmpleado
+ * @property string $idHerramienta
+ * @property string $idObra
+ * @property string|null comentario
+ * 
+ * @property Empleado $idEmpleado
+ * @property Herramienta $idHerramienta
+ * @property Obra $idObra
+ * 
+ */
+class HerramientaObra extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'HerramientaObra';
+    
+    }
+     /**
+     * {@inheritdoc}
+     */
+    public function rules(){
+        return[
+            [['id','idEmpleado', 'idHerramienta','idObra'],'required'],
+            [['comentario'],'string', 'max'=>100],
+            [['creado', 'modificado','eliminado'],'safe'],
+            [['id','idEmpleado', 'idHerramienta','idObra'],'string', 'max'=>36],
+            [['idEmpleado'], 'exist', 'skipOnError' => true, 'targetClass' => Empleado::class, 'targetAttribute' => ['idEmpleado' => 'id']],
+            [['idHerramienta'], 'exist', 'skipOnError' => true, 'targetClass' => Herramienta::class, 'targetAttribute' => ['idHerramienta' => 'id']],
+            [['idObra'], 'exist', 'skipOnError' => true, 'targetClass' => Obra::class, 'targetAttribute' => ['idObra' => 'id']],
+        ];
+    }
+    
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id'=>'ID',
+            'idEmpleado'=>'ID Empleado',
+            'idHerramienta'=>'ID Herramienta',
+            'idObra'=>'ID Obra',
+            'comentario'=>'Comentario',
+        ];
+    }
+
+
+    
+    /**
+     * Gets query for [[IdEmpleado]].
+     *
+     * @return \yii\db\ActiveQuery
+     * 
+     */
+    public function getEmpleado()
+    {
+        return $this->hasOne(Empleado::class, ['id' => 'idEmpleado']);
+    }
+
+    
+    
+    /**
+     * Gets query for [[IdHerramienta]].
+     *
+     * @return \yii\db\ActiveQuery
+     * 
+     */
+    public function getHerramienta()
+    {
+        return $this->hasOne(Herramienta::class, ['id' => 'idHerramienta']);
+    }
+
+    
+    
+    /**
+     * Gets query for [[IdObra]].
+     *
+     * @return \yii\db\ActiveQuery
+     * 
+     */
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id' => 'idObra']);
+    }
+}

+ 59 - 0
models/Obra.php

@@ -0,0 +1,59 @@
+<?php
+
+namespace app\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "Obra".
+ *
+ * @property string $id
+ * @property string $nombre
+ * @property string $fechaInicio
+ * @property string $fechaFinal
+ * @property string|null $descripcion
+ * @property string|null $creado
+ * @property string|null $modificado
+ * @property string|null $eliminado
+ */
+class Obra extends ModeloBase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'Obra';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['id', 'nombre', 'fechaInicio','fechaFinal'], 'required'],
+            [['fechaInicio','fechaFinal','creado', 'modificado', 'eliminado'], 'safe'],
+            [['id'], 'string', 'max' => 36],
+            [['nombre', 'descripcion'], 'string', 'max' => 100],
+            [['id'], 'unique'],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'nombre' => 'Nombre',
+            'fechaInicio' => 'Fecha Inicio',
+            'fechaFinal' => 'Fecha Final',
+            'descripcion' => 'Descripcion',
+            'creado' => 'Creado',
+            'modificado' => 'Modificado',
+            'eliminado' => 'Eliminado',
+        ];
+    }
+}

+ 11 - 5
models/Servicio.php

@@ -9,7 +9,7 @@ use Yii;
  *
  * @property string $id
  * @property string $factura
- * @property string $tipo
+ * @property string $idTipo
  * @property string|null $descripcion
  * @property string|null $fechaServicio
  * @property string|null $idTaller
@@ -20,6 +20,7 @@ use Yii;
  *
  * @property Taller $idTaller
  * @property Vehiculo $idVehiculo
+ * @property TipoServicio $idTipo
  * @property ServicioElemento[] $servicioElementos
  */
 class Servicio extends ModeloBase
@@ -38,14 +39,15 @@ class Servicio extends ModeloBase
     public function rules()
     {
         return [
-            [['id', 'factura', 'tipo'], 'required'],
+            [['id', 'factura'], 'required'],
             [['descripcion'], 'string'],
             [['fechaServicio', 'creado', 'modificado', 'eliminado'], 'safe'],
-            [['id', 'idTaller', 'idVehiculo'], 'string', 'max' => 36],
-            [['factura', 'tipo'], 'string', 'max' => 100],
+            [['id', 'idTaller', 'idVehiculo', 'idTipo' ], 'string', 'max' => 36],
+            [['factura'], 'string', 'max' => 100],
             [['id'], 'unique'],
             [['idTaller'], 'exist', 'skipOnError' => true, 'targetClass' => Taller::class, 'targetAttribute' => ['idTaller' => 'id']],
             [['idVehiculo'], 'exist', 'skipOnError' => true, 'targetClass' => Vehiculo::class, 'targetAttribute' => ['idVehiculo' => 'id']],
+            [['idTipo'], 'exist', 'skipOnError' => true, 'targetClass' => TipoServicio::class, 'targetAttribute' => ['idTipo' => 'id']],
         ];
     }
 
@@ -57,11 +59,11 @@ class Servicio extends ModeloBase
         return [
             'id' => 'ID',
             'factura' => 'Factura',
-            'tipo' => 'Tipo',
             'descripcion' => 'Descripcion',
             'fechaServicio' => 'Fecha Servicio',
             'idTaller' => 'Id Taller',
             'idVehiculo' => 'Id Vehiculo',
+            'idTipo'=>'Id Tipo Servicio',
             'creado' => 'Creado',
             'modificado' => 'Modificado',
             'eliminado' => 'Eliminado',
@@ -88,6 +90,10 @@ class Servicio extends ModeloBase
         return $this->hasOne(Vehiculo::class, ['id' => 'idVehiculo']);
     }
 
+    public function getTipoServicio()
+    {
+        return $this->hasOne(TipoServicio::class, ['id' => 'idTipo']);
+    }
     /**
      * Gets query for [[ServicioElementos]].
      *

+ 14 - 8
models/Vehiculo.php

@@ -10,15 +10,18 @@ use Yii;
  * @property string $id
  * @property string|null $nombre
  * @property int|null $ano
- * @property string|null $color
+ * @property string|null $idColor
  * @property string|null $placa
  * @property string|null $serie
  * @property string|null $creado
- * @property string|null $marca
- * @property string|null $tipo
+ * @property string|null $idMarca
+ * @property string|null $idTipo
  * @property string|null $descripcion
  * @property string|null $modificado
  * @property string|null $eliminado
+ *  @property Marca $idMarca
+ * @property Color $idColor
+ * @property TipoAuto $idTipo
  */
 class Vehiculo extends ModeloBase
 {
@@ -40,9 +43,12 @@ class Vehiculo extends ModeloBase
             [['ano'], 'default', 'value' => null],
             [['ano'], 'integer'],
             [['creado', 'modificado', 'eliminado'], 'safe'],
-            [['id'], 'string', 'max' => 36],
-            [['nombre', 'color', 'placa', 'serie','tipo','marca','descripcion'], 'string', 'max' => 100],
+            [['id','idMarca','idColor','idTipo'], 'string', 'max' => 36],
+            [['nombre',  'placa', 'serie','descripcion'], 'string', 'max' => 100],
             [['id'], 'unique'],
+            [['idMarca'], 'exist', 'skipOnError' => true, 'targetClass' => Marca::class, 'targetAttribute' => ['idMarca' => 'id']],
+            [['idColor'], 'exist', 'skipOnError' => true, 'targetClass' => Color::class, 'targetAttribute' => ['idColor' => 'id']],
+            [['idTipo'], 'exist', 'skipOnError' => true, 'targetClass' => TipoAuto::class, 'targetAttribute' => ['idTipo' => 'id']],
         ];
     }
 
@@ -55,12 +61,12 @@ class Vehiculo extends ModeloBase
             'id' => 'ID',
             'nombre' => 'Nombre',
             'ano' => 'Ano',
-            'color' => 'Color',
+            'idColor' => 'ID Color',
             'placa' => 'Placa',
             'serie' => 'Serie',
             'creado' => 'Creado',
-            'tipo' => 'Tipo',
-            'marca' => 'Marca',
+            'idTipo' => 'ID Tipo',
+            'idMarca' => 'ID Marca',
             'descripcion' => 'Descripcion',
             'modificado' => 'Modificado',
             'eliminado' => 'Eliminado',

+ 85 - 0
modules/v1/controllers/HerramientaObraController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class HerramientaObraController extends AuthController {
+
+  public $modelClass = "v1\models\HerramientaObra";
+
+  public function actionIndex() {
+    $id = trim($this->req->get("id", ""));
+    $buscar = trim($this->req->get("q", ""));
+   
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    
+
+    if($buscar) {
+      
+      $query->andWhere([
+        "OR",
+        ["ilike", "idEmpleado", $buscar]
+      ]);
+
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->uuid();
+      $modelo->creado = new Expression('now()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar a obra en servicio");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Obra en servicio guardada");
+  }
+
+  public function actionEliminar() {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if($id !== "") {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Obra en servicio no encontrada");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la obra en servicio");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Obra en servicio eliminada");
+  }
+}

+ 85 - 0
modules/v1/controllers/ObraController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\AuthController;
+use yii\db\Expression;
+
+class ObraController extends AuthController {
+
+  public $modelClass = "v1\models\Obra";
+
+  public function actionIndex() {
+    $id = trim($this->req->get("id", ""));
+    $buscar = trim($this->req->get("q", ""));
+   
+
+    $query = $this->queryInicial;
+
+    if($id > 0) {
+      $query->andWhere(["id" => $id]);
+    }
+
+    
+
+    if($buscar) {
+      
+      $query->andWhere([
+        "OR",
+        ["ilike", "nombre", $buscar]
+      ]);
+
+    }
+
+    return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
+  }
+
+  public function actionGuardar() {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if($id !== "") {
+      $modelo = $this->modelClass::findOne($id);
+    }
+    if($modelo === null) {
+      $modelo = new $this->modelClass();
+      $modelo->uuid();
+      $modelo->creado = new Expression('now()');
+    } else {
+      $modelo->modificado = new Expression('now()');
+    }
+
+    $modelo->load($this->req->getBodyParams(), '');
+    if (!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("Hubo un problema al guardar la obra");
+    }
+
+    $modelo->refresh();
+    return (new Respuesta($modelo))
+      ->mensaje("Obra guardada");
+  }
+
+  public function actionEliminar() {
+    $id = trim($this->req->getBodyParam("id", ""));
+    $modelo = null;
+
+    if($id !== "") {
+      $modelo = $this->modelClass::findOne(["id" => $id]);
+    }
+    if($modelo === null) {
+      return (new Respuesta())
+        ->esError()
+        ->mensaje("Obra no encontrada");
+    }
+    $modelo->eliminado = new Expression('now()');
+    if(!$modelo->save()) {
+      return (new Respuesta($modelo))
+        ->mensaje("No se pudo eliminar la obra");
+    }
+
+    return (new Respuesta())
+      ->mensaje("Obra eliminada");
+  }
+}

+ 5 - 0
modules/v1/controllers/ServicioController.php

@@ -15,10 +15,12 @@ class ServicioController extends AuthController {
     $buscar = trim($this->req->get("q", ""));
     $taller = trim($this->req->get("taller", ""));
     $vehiculo = trim($this->req->get("vehiculo", ""));
+    $marca = trim($this->req->get("marca", ""));
     $inicio= trim($this-> req->get("inicio", ""));
     $fin= trim($this-> req->get("fin", ""));
     $query = $this->queryInicial 
     -> innerJoin("Vehiculo","{{Vehiculo}}.id = {{Servicio}}.[[idVehiculo]]")
+    ->innerJoin("Marca","{{Marca}}.id = {{Vehiculo}}.[[marca]]")
     ->innerJoin("Taller","{{Taller}}.id = {{Servicio}}.[[idTaller]]");
     
 
@@ -33,6 +35,9 @@ class ServicioController extends AuthController {
     if($vehiculo !== "") {
         $query->andWhere(["{{Vehiculo}}.id" => $vehiculo]);
     }
+    if($marca !== "") {
+      $query->andWhere(["{{Marca}}.id" => $marca]);
+  }
     if($inicio !=="" && $fin !==""){
       $query->andWhere(["between", "[[fechaServicio]]", $inicio,$fin]);
     }

+ 40 - 0
modules/v1/models/HerramientaObra.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace v1\models;
+
+use app\models\HerramientaObra as ModeloHerramientaObra;
+
+class HerramientaObra extends ModeloHerramientaObra
+{
+
+    public function fields()
+    {
+        return [
+            'id',
+            'idEmpleado',
+            'idHerramienta',
+            'idObra',
+            'comentario',
+            'creado',
+            'modificado',
+
+        ];
+    }
+    public function extraFields() {
+        return [
+            'empleado','herramienta','obra'
+        ];
+    }
+    public function getEmpleado()
+    {
+        return $this->hasOne(Empleado::class, ['id' => 'idEmpleado']);
+    }
+    public function getHerramienta()
+    {
+        return $this->hasOne(Herramienta::class, ['id'=>'idHerramienta']);
+    }
+    public function getObra()
+    {
+        return $this->hasOne(Obra::class, ['id'=>'idObra']);
+    }
+}

+ 20 - 0
modules/v1/models/Obra.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace v1\models;
+
+use app\models\Obra as ModeloObra;
+
+class Obra extends ModeloObra {
+
+  public function fields() {
+    return [
+      'id',
+      'nombre',
+      'fechaInicio',
+      'fechaFinal',
+      'descripcion',
+      'creado',
+      'modificado',
+    ];
+  }
+}

+ 6 - 3
modules/v1/models/Servicio.php

@@ -6,18 +6,18 @@ use app\models\Servicio as ModeloServicio;
 use app\models\ServicioElemento;
 use app\models\Taller;
 use app\models\Vehiculo;
-
+use app\models\TipoServicio;
 class Servicio extends ModeloServicio {
 
     public function fields() {
         return [
             'id',
             'factura',
-            'tipo',
             'descripcion',
             'fechaServicio',
             'idTaller',
             'idVehiculo',
+            'idTipo',
             'creado',
             'modificado',
         ];
@@ -27,6 +27,7 @@ class Servicio extends ModeloServicio {
         return [
             'taller',
             'vehiculo',
+            'tipoServicio',
             'servicioElemento'
         ];
     }
@@ -38,7 +39,9 @@ class Servicio extends ModeloServicio {
     public function getVehiculo() {
         return $this->hasOne(Vehiculo::class, ['id' => 'idVehiculo']);
     }
-
+    public function getTipoServicio() {
+        return $this->hasOne(TipoServicio::class, ['id' => 'idTipo']);
+    }
     public function getServicioElemento()
     {
         return $this->hasMany(ServicioElemento::class, ['idServicio' => 'id']);

+ 24 - 3
modules/v1/models/Vehiculo.php

@@ -2,7 +2,10 @@
 
 namespace v1\models;
 
+use app\models\Color;
 use app\models\Vehiculo as ModeloVehiculo;
+use app\models\Marca;
+use app\models\TipoAuto;
 
 class Vehiculo extends ModeloVehiculo {
 
@@ -11,9 +14,9 @@ class Vehiculo extends ModeloVehiculo {
       'id',
       'nombre',
       'ano',
-      'color',
-      'tipo',
-      'marca',
+      'idColor',
+      'idTipo',
+      'idMarca',
       'placa',
       'serie',
       'creado',
@@ -21,4 +24,22 @@ class Vehiculo extends ModeloVehiculo {
       'modificado',
     ];
   }
+  public function extraFields() {
+    return [
+        'marca',
+        'color',
+        'tipoAuto'
+    ];
+}
+
+public function getMarca() {
+  return $this->hasOne(Marca::class, ['id' => 'idMarca']);
+}
+
+public function getColor() {
+  return $this->hasOne(Color::class, ['id' => 'idColor']);
+}
+public function getTipoAuto() {
+  return $this->hasOne(TipoAuto::class, ['id' => 'idTipo']);
+}
 }