Pergunta

Sou novo no CakePhp e tenho trabalhado no livro Apress "Iniciando CakePhp de iniciantes a profissionais", mas tenha um problema após o capítulo do cozimento.

(Se você viu minha outra pergunta recente, saberá que eu tinha que pular esse capítulo porque não consigo fazer o console do Bake trabalhando na minha máquina Win7).

O problema é que não acho que as associações de mesa estejam mais funcionando corretamente, mesmo que costumavam quando eu iniciei o exemplo do aplicativo no blog no início do livro.

O exemplo do blog tem as seguintes tabelas:

Users
Posts

O modelo do usuário: $ hasmany = array ('post'); O modelo de postagem: $ pertencente = Array ('usuário');

Atualmente, estou usando o andaime apenas para testar tudo, mas tenho algumas visualizações personalizadas e uma ação add () add () para o Post_controller.

O problema é que, quando uso a ação add () para o pós -conclusão, o campo ID do usuário (da tabela de usuários) não é colocado no campo User_Id Foreign Key da tabela de postagens. Portanto, quando exibo a postagem, a parte do "autor" da visualização está em branco porque o ID não pode ser encontrado. Se eu usar debug($posts) Em seguida, a matriz retornou não possui nenhuma informação para user_id de cada postagem e, portanto, nenhuma informação na matriz 'usuário'.

Eu pensei que o user_id era a maneira convencional de adicionar uma associação entre tabelas para CakePhp, mas parece não estar funcionando.

Alguma idéia do que eu preciso fazer?

Muito obrigado antecipadamente,

Infiniti Fizz

PS Desculpe a todos se estou sobrecarregando você com problemas de CakePhp.

PPS

Quase esqueci, minha visualização add.ctp para postagens parece a seguir:

<div class="posts form">
 <?=$form->create('Post');?>
 <fieldset>
 <legend>Add Post</legend>
 <?
  e($form->input('name'));
  e($form->input('date'));
  e($form->input('content'));
  e($form->input('User'));
 ?>
 </fieldset>
 <?=$form->end('Submit');?>
</div>
<div class="actions">
 <ul>
  <li><?=$html->link(__('List Posts', true),array('action'=>'index'));?></li>
  <li><?=$html->link(__('List Users', true),array('controller','users', 'action'=>'index'));?></li>
  <li><?=$html->link(__('New User', true),array('controller'=>'users', 'action'=>'add'));?></li>
 </ul>
</div>

E a ação add () em posts_controller.php:

function add()
{
   if(!empty($this->data))
   {
    $this->Post->create();
    if($this->Post->save($this->data))
    {
     $this->Session->setFlash('The Post has been saved', true);
     $this->redirect(array('action' => 'index'));
    }
    else
    {
     $this->Session->setFlash('The Post could not be saved. Please try again.', true);
    }
   }
   $users = $this->Post->User->find('list');
   $this->set(compact('users'));
}
Foi útil?

Solução

Eu também sou novo no bolo, mas até onde eu sei, acho que você deveria mudar isso em add.ctp:

$form->input('User')

para isso

$form->input('user_id')

O FormHelper cuida de exibir a entrada como suspensão (com base nas referências Hasmany-Belongsto).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top