ON UPDATE CASCADE" in the table. Here is the error message:
Quote
There was 1 error:
1) ProjectTest::testUserRoleAssignment
CDbException: CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: I
ntegrity constraint violation: 1452 Cannot add or update a child row: a foreign
key constraint fails (`trackstar_test`.`tbl_project_user_role`, CONSTRAINT `FK_r
ole_name` FOREIGN KEY (`role`) REFERENCES `authitem` (`name`) ON DELETE CASCADE
ON UPDATE CASCADE)
C:\inetpub\wwwroot\medappt\yii\framework\db\CDbCommand.php:338
C:\inetpub\wwwroot\medappt\trackstar\protected\models\Project.php:125
C:\inetpub\wwwroot\medappt\trackstar\protected\tests\unit\ProjectTest.php:85
FAILURES!
Tests: 6, Assertions: 13, Errors: 1.
C:\inetpub\wwwroot\medappt\trackstar\protected\tests>
1) ProjectTest::testUserRoleAssignment
CDbException: CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: I
ntegrity constraint violation: 1452 Cannot add or update a child row: a foreign
key constraint fails (`trackstar_test`.`tbl_project_user_role`, CONSTRAINT `FK_r
ole_name` FOREIGN KEY (`role`) REFERENCES `authitem` (`name`) ON DELETE CASCADE
ON UPDATE CASCADE)
C:\inetpub\wwwroot\medappt\yii\framework\db\CDbCommand.php:338
C:\inetpub\wwwroot\medappt\trackstar\protected\models\Project.php:125
C:\inetpub\wwwroot\medappt\trackstar\protected\tests\unit\ProjectTest.php:85
FAILURES!
Tests: 6, Assertions: 13, Errors: 1.
C:\inetpub\wwwroot\medappt\trackstar\protected\tests>
and mysql ddl:
Quote
CREATE TABLE `tbl_project_user_role` (
`project_id` INT(11) NOT NULL,
`user_id` INT(11) NOT NULL,
`role` VARCHAR(64) NOT NULL,
PRIMARY KEY (`project_id`, `user_id`, `role`),
INDEX `FK_user_id` (`user_id`),
INDEX `FK_role_name` (`role`),
CONSTRAINT `FK_role_name` FOREIGN KEY (`role`) REFERENCES `authitem` (`name`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_project_id` FOREIGN KEY (`project_id`) REFERENCES `tbl_project` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_user_id` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
`project_id` INT(11) NOT NULL,
`user_id` INT(11) NOT NULL,
`role` VARCHAR(64) NOT NULL,
PRIMARY KEY (`project_id`, `user_id`, `role`),
INDEX `FK_user_id` (`user_id`),
INDEX `FK_role_name` (`role`),
CONSTRAINT `FK_role_name` FOREIGN KEY (`role`) REFERENCES `authitem` (`name`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_project_id` FOREIGN KEY (`project_id`) REFERENCES `tbl_project` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_user_id` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
project.php:
/**
* creates an association between the project, the user and the user's role within the project
*/
public function associateUserToRole($role, $userId)
{
$sql = "INSERT INTO tbl_project_user_role (project_id, user_id, role) VALUES (:projectId, :userId, :role)";
$command = Yii::app()->db->createCommand($sql);
$command->bindValue(":projectId", $this->id, PDO::PARAM_INT);
$command->bindValue(":userId", $userId, PDO::PARAM_INT);
$command->bindValue(":role", $role, PDO::PARAM_STR);
return $command->execute();
}
/**
* removes an association between the project, the user and the user's role within the project
*/
public function removeUserFromRole($role, $userId)
{
$sql = "DELETE FROM tbl_project_user_role WHERE project_id=:projectId AND user_id=:userId AND role=:role";
$command = Yii::app()->db->createCommand($sql);
$command->bindValue(":projectId", $this->id, PDO::PARAM_INT);
$command->bindValue(":userId", $userId, PDO::PARAM_INT);
$command->bindValue(":role", $role, PDO::PARAM_STR);
return $command->execute();
}
projecttest.php:
public function testUserRoleAssignment()
{
$project = $this->projects('project1');
$user = $this->users('user1');
$this->assertEquals(1,$project->associateUserToRole('owner', $user->id));
$this->assertEquals(1,$project->removeUserFromRole('owner', $user->id));
}

Help













