Model Attributes
table
The name of the table which the model corresponds to. A pluralized version of the model name with the current value of the WordPress database prefix$wpdb->prefix) is used by default (e.g. Venue will use a table named wp_venues).
If you set this value, you'll most likely want to include the token {prefix}at the beginning of the string, which will be replaced with the current value of $wpdb->prefix. For example:
<?php
class Venue extends MvcModel {
var $table = '{prefix}my_venues';
}
?>database
If you're using multiple databases under the same MySQL connection, you can specify that a model's table is in a database other than the primary WordPress database using $database. For example:
<?php
class Venue extends MvcModel {
var $database = 'shared_database';
}
?>includes
To include associated models by default in SELECT queries, set $includes to an array of model names for which associations have already been defined. For example:
<?php
class Event extends MvcModel {
var $belongs_to = array('Venue');
var $has_and_belongs_to_many = array(
'Speaker' => array(
'join_table' => '{prefix}events_speakers',
'fields' => array('id', 'first_name', 'last_name')
)
);
var $includes = array('Venue', 'Speaker');
}
?>order
This can be used to set the default order that is used in SELECT queries. For example:
<?php
class Venue extends MvcModel {
var $order = 'Venue.name ASC, Venue.id ASC';
}
?>display_field
The name of the field which will be used to textually represent an object in various functions that assume that such a field is available.
<?php
// models/venue.php:
class Venue extends MvcModel {
var $display_field = 'name';
}
// views/venues/show.php:
// The following will output an anchor tag that uses $object->name for its text.
echo $this->html->venue_link($object);
?>The display_field value will always be available in the __name property of an object ($object->__name), allowing you to represent an object textually without knowing exactly what property should be used.
Using values other than column values for display_field
Note that fields that are set in after_find() can also be used for display_field, in case the displayed value should be something other than the value of a specific column.
<?php
class Event extends MvcModel {
// The events table doesn't have a column named name, but we'll
// set $object->name in after_find() below
var $display_field = 'name';
public function after_find($object) {
if (isset($object->speakers)) {
$speaker_names = array();
foreach($object->speakers as $speaker) {
$speaker_names[] = $speaker->name;
}
$object->speaker_names = implode(', ', $speaker_names);
$object->name = $object->speaker_names;
if (isset($object->venue)) {
$object->name .= ' at '.$object->venue->name;
}
}
}
}
?>primary_key
The name of the field which will be used as the primary key of an object. The default value is 'id'.
<?php
class Venue extends MvcModel {
var $primary_key = 'id';
}
?>selects
By default, all of the columns of a model's table will be retrieved in a SELECT query, but you can change this default behavior by specifying an array of columns to select in $select. For example:
<?php
class Venue extends MvcModel {
var $selects = array('id', 'name', 'url');
}
?>per_page
The default number of results per page that are returned when paginate() is called on the model. For example:
<?php
class Venue extends MvcModel {
var $per_page = 8;
}
?>hide_menu
Each model shows up as an Administration Menu by default, by you can disable this menu by setting hide_menu to false.
<?php
class Event extends MvcModel {
var $hide_menu = false;
}
?>For information on customizing Administration Menus, see AdminPages.