Preview:
tablas a:
-- Table: public.tipobuques

-- DROP TABLE IF EXISTS public.tipobuques;

CREATE TABLE IF NOT EXISTS public.tipobuques
(
    id_tipo integer NOT NULL DEFAULT nextval('tipo_buques_id_tipo_seq'::regclass),
    desc_tipo character varying COLLATE pg_catalog."default",
    otros_datos character varying(255) COLLATE pg_catalog."default",
    CONSTRAINT tipo_buques_pkey PRIMARY KEY (id_tipo)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.tipobuques
    OWNER to postgres;

tabla b:
-- Table: public.transportes

-- DROP TABLE IF EXISTS public.transportes;

CREATE TABLE IF NOT EXISTS public.transportes
(
    id_transporte integer NOT NULL DEFAULT nextval('transportes_id_transporte_seq'::regclass),
    nombre_transporte character varying(255) COLLATE pg_catalog."default" NOT NULL,
    id_buquescarga integer,
    id_tipo integer[],
    id_nacionalidad integer,
    otros_datos character varying(255) COLLATE pg_catalog."default",
    CONSTRAINT transportes_pkey PRIMARY KEY (id_transporte)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.transportes
    OWNER to postgres;

<div class="col-xs-4" id='id_transporte' style="display:none;">
                <?= $form->field($model, 'id_transporte')
                    ->dropDownList(
                        ArrayHelper::map(
                            Transportes::find()->all(),
                            'id_transporte',
                            'nombre_transporte'
                        ),
                        [
                            'prompt' => 'Seleccione Transporte',
                            'id' => 'id-transporte'
                        ]
                    ); ?>
            </div>

            <div class="col-xs-4" id='id_tipo' style="display:none;">
                <?= $form->field($model, 'id_tipo')->widget(\kartik\depdrop\DepDrop::classname(), [
                    'options' => ['id' => 'id-tipo'],
                    'pluginOptions' => [
                        'depends' => ['id-transporte'],
                        'placeholder' => 'Seleccione Tipo de Buque',
                        'url' => \yii\helpers\Url::to(['transportes/listartipos'])
                    ],
                ]); ?>
            </div>
functionController:
public function actionListartipos()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    
    $out = [];
    
    if (isset($_POST['depdrop_parents'])) {
        $id_transporte = $_POST['depdrop_parents'][0];
        
        if (!empty($id_transporte)) {
            // Buscar el transporte seleccionado
            $transporte = \app\models\Transportes::findOne($id_transporte);
            
            if ($transporte && !empty($transporte->id_tipo)) {
                // Convertir el array PostgreSQL a un array de PHP
                $ids_tipos = $transporte->id_tipo;
                
                // Si es una cadena (formato PostgreSQL array), convertir a array
                if (is_string($ids_tipos)) {
                    // Remover llaves y convertir a array
                    $ids_tipos = trim($ids_tipos, '{}');
                    $ids_tipos = $ids_tipos ? explode(',', $ids_tipos) : [];
                }
                
                if (!empty($ids_tipos)) {
                    // Buscar los tipos de buques correspondientes a los IDs en el array
                    $out = \app\models\Tipobuques::find()
                        ->where(['id_tipo' => $ids_tipos])
                        ->select(['id_tipo as id', 'desc_tipo as name'])
                        ->asArray()
                        ->all();
                }
            }
        }
    }
    
    return ['output' => $out, 'selected' => ''];
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter