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.