Yii Framework Forum: estanciando uma classe dentro de outra classe - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

estanciando uma classe dentro de outra classe Rate Topic: -----

#1 User is offline   harry 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 16-July 09
  • Location:Santos

Posted 09 January 2010 - 08:29 AM

Bom dia pessoal, estou com um problema, tenho um modulo tb_produtos, e outro tb_fotos, onde em Tb_produtosController.php na public function actionCreate() eu faço o upload de uma imagem e tenho que ali mesmo salvar no modulo tb_fotos, ou seja tenho que salvar um registro de outro modulo dentro desse tb_produtos, tentei fazer isso:

$_foto['tb_fotos']['arquivo'] = "arquivo.jpg";
$_foto['tb_fotos']['produto_id'] = 1;

$foto = new tb_fotos;
$foto->attributes = $_fotos['tb_fotos'];
$foto->save();


tentei colocar esse codigo dentro do actionCreate() do tb_produtos, porem não deu certo.
Como eu poderia fazer essa operação?

O erro:

CDbException
Description

CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1452 Cannot add or update a child row: a foreign key constraint fails (`dcasarini`.`tb_fotos`, CONSTRAINT `tb_fotos_ibfk_1` FOREIGN KEY (`produto_id`) REFERENCES `tb_produtos` (`id_produto`) ON DELETE NO ACTION ON UPDATE NO ACTION)INSERT INTO `tb_fotos` (`arquivo`, `produto_id`) VALUES (:yp0, :yp1)
0

#2 User is offline   harry 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 16-July 09
  • Location:Santos

Posted 09 January 2010 - 04:20 PM

Achei uma forma que não da erro, porem não ta salvando no banco de dados.

$dados["tb_fotos"]["arquivo"] = $arquivo;
$dados["tb_fotos"]["produto_id"] = "1";
tb_fotos::model()->attributes = $dados['tb_fotos'];
tb_fotos::model()->save();

0

#3 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 10 January 2010 - 03:00 PM

da segunda forma não vai funcionar mesmo .. use a 1º forma e cheque o retorno de errors do seu model.

$_foto['tb_fotos']['arquivo'] = "arquivo.jpg";
$_foto['tb_fotos']['produto_id'] = 1;

$foto = new tb_fotos;
$foto->attributes = $_fotos['tb_fotos'];
$foto->save();

var_dump($foto->errors);


Every solution creates a problem.
twitter.com/nenhumnick
0

#4 User is offline   harry 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 16-July 09
  • Location:Santos

Posted 10 January 2010 - 03:42 PM

Consegui criar um registro na tabela porem não vai o valor setado nas variaveis, o campo arquivo fica em branco e o produto_id zerado:

$_arquivo['tb_arquivos']['arquivo'] = "foto.jpg";
$_arquivo['tb_arquivos']['produto_id'] = 1;

$foto = new tb_fotos;
$foto->attributes = $_arquivo['tb_arquivo'];
$foto->save(true, array('arquivo'=>'foto.jpg', 'produto_id'=>1));

0

#5 User is offline   harry 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 16-July 09
  • Location:Santos

Posted 11 January 2010 - 06:20 PM

Ae pessoal depois de muitas tentativas consegui...

fiz assim:

$foto = new tb_fotos;
$foto->attributes = array('id_foto'=>'', 'arquivo'=>'foto.jpg', 'produto_id'=>'1');
$foto->save();

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users