Cant Get Relations In Model To Work

I have two tables:

[sql]User(

id,

username,

passowrd,

person_id

) [/sql]

and table [sql]Person(

id,

fname,

lname,

)

[/sql]

and I want to create relation between person_id and id of table Person. But it seems not to work, it says there is no such column as person_id in person. i guess Im missing some parameters here. My model:

<?php


/**

 * This is the model class for table "user".

 *

 * The followings are the available columns in table 'user':

 * @property string $id

 * @property string $username

 * @property string $pwd_hash

 * @property string $person_id

 */

class User extends CActiveRecord

{

    public $password;

    public $password_repeat;

	/**

	 * @return string the associated database table name

	 */

	public function tableName()

	{

		return 'user';

	}


	/**

	 * @return array validation rules for model attributes.

	 */

    public function rules()

    {

        // NOTE: you should only define rules for those attributes

        //that will receive user inputs.

        return array(

            array('username', 'required'),

            array('username', 'length', 'max'=>20),

            array('password', 'length', 'max'=>32),

            array('password', 'compare'),

            array('password_repeat', 'safe'),

        );

    }


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

            'person'=>array(self::HAS_ONE, 'Person', 'person_id'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

    public function attributeLabels()

    {

        return array(

            'id' => 'ID',

            'username' => 'Username',

            'password' => 'Password',

            'password_repeat' => 'Password Repeat',

        );

    }


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 *

	 * Typical usecase:

	 * - Initialize the model fields with values from filter form.

	 * - Execute this method to get CActiveDataProvider instance which will filter

	 * models according to data in model fields.

	 * - Pass data provider to CGridView, CListView or any similar widget.

	 *

	 * @return CActiveDataProvider the data provider that can return the models

	 * based on the search/filter conditions.

	 */

	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('id',$this->id,true);

		$criteria->compare('username',$this->username,true);

		$criteria->compare('pwd_hash',$this->pwd_hash,true);

		$criteria->compare('person_id',$this->person_id,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}


	/**

	 * Returns the static model of the specified AR class.

	 * Please note that you should have this exact method in all your CActiveRecord descendants!

	 * @param string $className active record class name.

	 * @return User the static model class

	 */

	public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}

}



you need a user_id in Person table in order to pull a person for a user. since a use has one person your table structure should be as following


User(

id,

username,

passowrd,

person_id // remove this

) 


Person(

id,

fname,

lname,

user_id // ad this

)


// then in your user model you can do this

'person'=>array(self::HAS_ONE, 'Person', 'user_id'),