Cómo mandar un id desde un controlador

Tengo un dos modelos tarjeta y chip. Y necesito que cuando inserte los datos de un chip me actualice el modelo tarjeta, no sé cómo mandar el id de la tarjeta al controlador de la tarjeta desde el controlador del chip. La función $modeltarjeta->sabe() no me sirve, me agrega otra tarjeta, y yo lo que necesito es modificar los datos de la existente. Cómo puedo hacerlo desde el actionCreate del controlador del chip??

y cual es la clave foranea q los enlaza ?

Lo primero, necesitas que en la base de datos la tabla que contiene los “chips” tenga una relación con “tarjeta”. Si es una relación 1:1, tendrías, por ejemplo, un campo “tarjeta_id” en la tabla “chip”, mejor con una clave foránea y un índice y todo eso.

Cuando des de alta un “chip”, debes introducir una “tarjeta”.

Al guardar o modificar el “chip”, puedes recuperar el modelo “tarjeta” asociado.

Algo así para el ChipController:

// aquí validamos los campos y todo eso y podemos hacer algo así:

$modelChip->save();

// Y ahora algo así

$modelChip->tarjeta->tipo_tarjeta = "DATOS DIVERSOS";
$modelChip->tarjeta->save();

Y para poder hacer eso, necesitamos declarar la relación en el model de “chip”:

public function getTarjeta()
{
return $this->hasOne(app/models/Tarjeta::class), ['id' => 'tarjeta_id']);
}

Al llamar a $modelChip->tarjeta, Yii usará getTarjeta() para recuperar la tarjeta asociada.

A ver si te sirve.

1 Like

La clave foránea es id_tarjeta

el método save sirve para crear y para actualizar, si desea actualizar debe primero hacer un find para tener la instancia del registro que quiere actualizar, también puede usar el método update para asegurarse que realmente se actualice y no que se cree un registro nuevo.