Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

amochiutti82

relacionamentos hasmany e belongsto

Recommended Posts

Boa tarde. Estou tentando implementar um sistema onde eu controlo os acessos dos registros pelo usuario.

 

No exemplo eu tenho

as tabelas:

 

users: id,nome

modelos: id,descricao,marca_id,user_id

marcas:id,descricao,user_id

 

implementei todas as actions para eu cadastrar marcas, usuario se loga e tem acesso somente as marcas que ele cadastrou, mas estou tento dificuldade para implementar os modelos, quando tento relacionar nos model ele me da erro de sql,

cada modelo pode ter uma marca, tipo, switch modelo tal, da marca tal .

e essas tabelas somente os donos dela o usuario em questao podem editar os registros

 

no model do user, coloquei hasmany para modelos e marcas

em modelos estou tendo dificuldade pois ao meu ver ela pertece a usuario e marca, quando relaciono colocando belongs para as duas tabela me retorna erro dizendo que o campo marca_id nao existe, mas ta criado no banco.

 

Entao eu acho que estou comentendo erro nos relacionamentos, alguem pode me orientar ?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo mais basico que estou tentando implementar


modelos: id,nome,marca_id
marcas: id,nome

modelo tal possui marca tal

Models lá ta relacionado e tudo mais

modelo
$belongsTo = array ('Marca');

marca
$hasMany = array ('Modelo');

no controller dos meus modelos

eu busco a marca

$marca = $this->Modelo->Marca->find('

list);
$this->set(compact('marcas'));

no meu view

na hora de cadastrar o modelo
eu tenho o campo marca que eh tipo int que é o campo marca.id referente a tabela a marca

e tendo buscar no meu input
$this->Form->input('marca_id', array ('type' => 'select','options' => $marcas));

assim no meu input select retorna somente os id das marcas, como que eu faço para eu mostrar o nome da marca e gravar o id

eu consegui até fazer mostrar no nome ai eu mexia no controller no find ('list' , array ('fields' => 'nome')) só que assim eu salvo o nome e não a id da marca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu vai fazer o seguinte

 

1-no model Marca tu tem que colocar

public $displayField = 'nome';

 

2-no controller Modelos a pesquisa vai ser assim

 

$marca = $this->Modelo->Marca->find('

list);
$marca = $this->Modelo->Marca->find('list', array(
'fields' => array('Marca.id', 'Marca.nome'),
));
3-na view vai ficar assim
<?php echo $this->Form->input('marca_id'); ?>

eu faço assim e dá certo.

testa aí e me diz o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.