Hello guys,
I'm new to cakePHP and I'm trying to try a HABTM insert into database
but it's not working, this is what I got:
A table for users, a table for lyfestyles and a lifestyles_users
table, this are my models:
class User extends AppModel
{
var $name = 'User';
var $hasAndBelongsToMany = array('Lifestyle' =>
array('className' => 'Lifestyle',
'joinTable' => 'lifestyles_users',
'foreignKey' => 'user_id',
'associationForeignKey'=>
'lifestyle_id',
'conditions' => '',
'order' => '',
'limit' => '',
'unique' => true,
'finderQuery' => '',
'deleteQuery' => '',
)
);
}
class Lifestyle extends AppModel
{
var $name = 'Lifestyle';
var $hasAndBelongsToMany = array('User' =>
array('className' => 'User',
'joinTable' => 'lifestyles_users',
'foreignKey' => 'lifestyle_id',
'associationForeignKey'=> 'user_id',
'conditions' => '',
'order' => '',
'limit' => '',
'unique' => '',
'finderQuery' => '',
'deleteQuery' => '',
)
);
}
And my join table has this structure:
CREATE TABLE `lifestyles_users` (
`lifestyle_id` int(10) unsigned NOT NULL default '0',
`user_id` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`lifestyle_id`,`user_id`)
) ENGINE=MyISAM;
The first thing I do is to insert a new user by registering it, then
in the lifestyle action of the users_controller.php I can set its
lifestyle, this is my code:
function lifestyle()
{
$this->pageTitle = 'Mi Lifestyle';
$this->User->id = $this->Session->read('user_id');
if(empty ($this->data))
{
$this->data = $this->User->read();
$this->set('User', $this->data);
$this->set('lifestyles', $this->User->Lifestyle-
>generateList(null, null, null, '{n}.Lifestyle.id',
'{n}.Lifestyle.lifestyle'));
$this->set('deportes', $this->User->Lifestyle-
>generateList('WHERE Lifestyle.tipo="deportes"', null, null,
'{n}.Lifestyle.id', '{n}.Lifestyle.lifestyle'));
$this->set('entretenimiento',
$this->User->Lifestyle-
>generateList('WHERE Lifestyle.tipo="entretenimiento"', null, null,
'{n}.Lifestyle.id', '{n}.Lifestyle.lifestyle'));
$this->set('cultura', $this->User->Lifestyle-
>generateList('WHERE Lifestyle.tipo="cultura"', null, null,
'{n}.Lifestyle.id', '{n}.Lifestyle.lifestyle'));
$this->set('viajes', $this->User->Lifestyle-
>generateList('WHERE Lifestyle.tipo="viajes"', null, null,
'{n}.Lifestyle.id', '{n}.Lifestyle.lifestyle'));
}
else
{
if ($this->User->save($this->data))
{
$this->flash('Tu lifestyle ha sigo
guardado','/users/view/' .
$this->Session->read('user_id'));
}
else
{
$this->flash('Tu lifestyle NO pudo ser
guardado','/users/
view/' . $this->Session->read('user_id'));
}
}
}
And this is my view where I send lifestyles in the form manual says to
(data[ModelName][ModelName]), in this case data[Lifestyle][Lifestyle]:
<?php echo $html->formTag('/users/lifestyle') ?>
<table>
<tr>
<td>
<h1>Deportes:</h1>
<label>Elige uno o más de la lista</label><br />
<?php echo $html->selectTag('Lifestyle/Lifestyle',
$deportes, null,
array('multiple' => 'multiple')) ?>
</td>
<td>
<h1>Entretenimiento:</h1>
<label>Elige uno o más de la lista</label><br />
<?php echo $html->selectTag('Lifestyle/Lifestyle',
$entretenimiento, null, array('multiple' => 'multiple')) ?>
</td>
</tr>
<tr>
<td>
<h1>Cultura</h1>
<label>Elige uno o más de la lista</label><br />
<?php echo $html->selectTag('Lifestyle/Lifestyle',
$cultura, null,
array('multiple' => 'multiple')) ?>
</td>
<td>
<h1>Viajes</h1>
<label>Elige uno o más de la lista</label><br />
<?php echo $html->selectTag('Lifestyle/Lifestyle',
$viajes, null,
array('multiple' => 'multiple')) ?>
</td>
</tr>
</table>
<?php echo $html->submitTag('Guardar') ?>
</form>
What am I doing wrong? I hope you can help me guys, thanks in advance!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---