Models
What are models?
Whenever data needs to be retrieved, manipulated or deleted this should always be done by a model. A Model is a representation of some kind of data and has the methods to change them. For example: you never put SQL queries in a Controller, those are put in the Model and the Controller will call upon the Model to execute the queries. This way if your database changes you won't need to change all your Controllers but just the Model that acts upon it.
How are Models used?
In Fuel a Model is essentially just a Class like any other. They do nothing more than a library, but the Model_ prefix helps to differentiate it from other classes. To do something useful with a Model you will need to use other classes.
Writing SQL Queries
You can use the DB class to build queries with native SQL like so:
DB::query('SELECT * FROM users WHERE id = 5');
Using the Query Builder
When it comes to escaping data, working with data in arrays or making an application portable over multiple database engines, you might find native SQL to be rather cumbersome. Using the Query Builder methods in the DB Class you can abstract writing native SQL:
DB::select('title, content')->from('articles')->execute()->get();
See more about native SQL queries and using the Query Builder in the DB class documentation.
Don't like SQL at all?
If you find working with both native SQL and Query Builder methods to be cumbersome or illogical then why not try out the Orm Package.
// find all articles
$entry = Model_Article::find('all');
// find all articles from category 1 order descending by date
$entry = Model_Article::find('last', array(
'where' => array('category_id', 1),
'order_by' => array('date', 'desc')
));
See more about working with ORM in the Orm Package documentation.