PHP on T R A X
Rapid Application Development Made Easy

How do I add/update/delete records?


Example 1


There is built in functionality for inserting, updating, and deleting records in ActiveRecord?. Below is an example of how to and insert, update, and delete from a form in Trax. So lets say we have a Table called users the below would be a controller for adding, updating and deleting users.



Users Manager Controller (app/controllers/users_manager_controller.php)

class UsersManager extends ApplicationController {
    function index() {
        $user = new User();
        $this->users = $user->find_all();
    }
    
    function add() {
        # you can pass the array of key => value params to the contructor
        # or into the save function. as well you can set them directly if 
        # wanted to such as $this->user->first_name = "John";
        $this->user = new User($_POST['user']);
        if($_POST) {
            if($this->user->save()) { 
                Session::flash('notice', 'User added succesfully');
                $this->redirect_to = url_for(array(":action" => "index"));            
            }   
        }
    }
    
    function edit() {
        $user = new User();
        $this->user = $user->find($_REQUEST['id']);
        if($_POST) {
            if($this->user->save($_POST['user'])) { 
                Session::flash('notice', 'User updated succesfully');
                $this->redirect_to = url_for(array(":action" => "index"));            
            }   
        }   
    }
    
    function delete() {
        $user = new User();
        if($user->delete($_REQUEST['id'])) {
            Session::flash('notice', 'User updated succesfully');                          
        }    
        $this->redirect_to = url_for(array(":action" => "index")); 
    }
}


User Model (app/models/user.php)

class User extends ActiveRecord {

}



Example 2

Now lets say you have a shopping cart and you are placing an order and you have a table called products, orders, and order_items.

$order = new Order($_REQUEST['order']);
foreach($_REQUEST['products_to_buy'] as $prod_id => $qty) {
    $product = new Product();
    $product = $product->find($prod_id);
    # or you can do this instead $product->load($prod_id); 
    $order_items[] = new OrderItem(array("product" => $product,
                                         "quantity" => $qty)); 
}
$order->order_items = $order_items;
$order->save();


$_REQUESTorder? is an array from the form with generic stuff about the order to go into the order table.
$_REQUESTproducts_to_buy? is an array from the form of the products that are to bought for this order.

OrderItem? Model (app/models/order_item.php)

class OrderItem extends ActiveRecord {
    public $belongs_to = "order,product";      
}


Order Model (app/models/order.php)

class Order extends ActiveRecord {    
    public $has_many = "order_items";  
}