Here's my user Controller
public function action_create_student(){
$view = View::forge('admin/users/create_student');
if (Input::method() == 'POST')
{
$val = Model_User::validate('create');
if ($val->run())
{
$newuser = Model_User::forge(array(
'username'=> Input::post('username'),
'firstname' =>Input::post('firstname'),
'middlename'=> Input::post('middlename'),
'lastname'=> Input::post('lastname'),
'password'=> Auth::instance()->hash_password(Input::post('password')),
'phone_number'=> Input::post('phone_number'),
'group'=> Input::post('group'),
'email'=> Input::post('email'),
'course' =>Input::post('course'),
));
$useruser = Model_Student::forge(array(
'course' =>Input::post('course'),
'user_id' =>Input::post('user_id'),
));
$useruser->save();
$newuser->save();
I want to add user and I want the user_id (foreign key) is equal to the id (primary key) in user table
Here's my user's Model
<?php
class Model_User extends \Orm\Model
{
protected static $_properties = array(
'id',
'username',
'password',
'firstname',
'middlename',
'lastname',
'phone_number',
'group',
'email',
'created_at',
'updated_at',
);
protected static $_has_one = array(
'student' => array(
'model_to' => 'Model_Student',
'key_from' => 'id',
'key_to' => 'user_id',
'cascade_delete' => true,
),
);
// public function get_full_name () {
// return $this->'firstname' . ' ' . $this->'lastname';
// static::method_exists(object, method_name());
// }
protected static $_observers = array(
'Orm\Observer_CreatedAt' => array(
'events' => array('before_insert'),
'mysql_timestamp' => false,
),
'Orm\Observer_UpdatedAt' => array(
'events' => array('before_save'),
'mysql_timestamp' => false,
),
);
public static function validate($factory)
{
$val = Validation::forge($factory);
$val->add_field('username', 'Username', 'required|max_length[50]');
$val->add_field('password', 'Password', 'required|max_length[255]');
$val->add_field('firstname', 'Firstname', 'required|max_length[50]');
$val->add_field('middlename', 'Middlename', 'required|max_length[255]');
$val->add_field('lastname', 'Lastname', 'required|max_length[255]');
$val->add_field('phone_number', 'Phone Number', 'required|valid_string[numeric]');
$val->add_field('group', 'Group', 'required|valid_string[numeric]');
$val->add_field('email', 'Email', 'required|valid_email|max_length[255]');
return $val;
}
}
Here's my student Model
class Model_Student extends \Orm\Model
{
protected static $_properties = array(
'id',
'course',
'user_id',
'created_at',
'updated_at',
);
/**
* @var array belongs_to relationships
*/
protected static $_belongs_to = array(
'user' => array(
'model_to' => 'Model_User',
'key_from' => 'user_id',
'key_to' => 'id',
),
);
protected static $_observers = array(
'Orm\Observer_CreatedAt' => array(
'events' => array('before_insert'),
'mysql_timestamp' => false,
),
'Orm\Observer_UpdatedAt' => array(
'events' => array('before_save'),
'mysql_timestamp' => false,
),
);
public static function validate($factory)
{
$val = Validation::forge($factory);
$val->add_field('course', 'Course', 'required|max_length[50]');
$val->add_field('user_id', 'User_id', 'required|valid_string[numeric]');
return $val;
}
}
Help me get rid of this one need help thanks :)
In your controller you can simply do
instead of
Providing you have your relations set up correctly, which it appears that you do, the ORM will automatically populate the key for you on save. Basic code samples can be found in the documentation: http://fuelphp.com/docs/packages/orm/relations/has_one.html#/has_one