You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.
How to add additional information to a user when using BUM extension?
1 Create the necessary tables; something like:
CREATE TABLE users_info1 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
additional_data1_info1 VARCHAR(250),
additional_data2_info1 VARCHAR(250),
PRIMARY KEY (id) ,
FOREIGN KEY (id) REFERENCES users (id )
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=InnoDB;
CREATE TABLE users_info2 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
id_user INT UNSIGNED NOT NULL,
additional_data1_info2 VARCHAR(250),
additional_data2_info2 VARCHAR(250),
PRIMARY KEY (id) ,
FOREIGN KEY (id_user) REFERENCES users (id )
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=InnoDB;
Table users_info1 is in a relation of one to one to a user and table users_info2, in a relation of one to many (so, for a user there can be more then one field in table users_info2).
2 Create table models in your application (for example in application.models):
models/UsersInfo1.php
<?php
/**
* This is the model class for table "users_info1".
*
* The followings are the available columns in table 'users_info1':
* @property string $id
* @property string $additional_data1_info1
* @property string $additional_data2_info1
*
* The followings are the available model relations:
* @property Users $id0
*/
class UsersInfo1 extends CActiveRecord
{
// ...
}
models/UsersInfo2.php
<?php
/**
* This is the model class for table "users_info2".
*
* The followings are the available columns in table 'users_info2':
* @property string $id
* @property string $id_user
* @property string $additional_data1_info2
* @property string $additional_data2_info2
*
* The followings are the available model relations:
* @property Users $idUser
*/
class UsersInfo2 extends CActiveRecord
{
// ...
}
3 Create corresponding CRUD.
The important thing about table users_info1 is the primary key:
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
that is also a foreign key for table users. id field makes the link between a user an it's associated data.
Same for table users_info2, the important filed is :
id_user INT UNSIGNED NOT NULL,
4 You must take care of the logic behind this tables. (Who should be allowed to create, read, update and delete a record)
For example when creating a new record if you want to automatically link it with the current user, in the create form you may write something like:
<?php echo $form->hiddenField($model, 'id', array('value'=>Yii::app()->user->id)); ?>
for table users_info1 (do not forget to declare id as safe or to manually assign it to the new model), or like
<?php echo $form->hiddenField($model, 'id_user', array('value'=>Yii::app()->user->id)); ?>
for table users_info2.
adding new fields for a user
Hi, of course that thare are more ways of doing this, just that every way is better for a certain purpose.
If this is not the way you were thinking jut tell me what it's in your mind and maybe there is a way of implementing it.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.