Twinnable¶
- class Nos\Orm_Behaviour_Twinnable¶
- Extends Nos\Orm_Behaviour_Contextable.It adds the ability to twin together different items with different contexts.
See also
See also
Nos\Orm_Behaviour_Contextable for configuration and methods.
Configuration¶
- property Nos\Orm_Behaviour_Twinnable::$common_id_property¶
Required. Column used to store the common ID between twinned items. Data type must be int.
- property Nos\Orm_Behaviour_Twinnable::$is_main_property¶
Required. Column used to store if the item is the main item among twin items. Data type must be boolean.
Methods¶
- Nos\Orm_Behaviour_Twinnable::delete_all_context()¶
Removes all items twinned to the current item, including the current item itself.
- Nos\Orm_Behaviour_Twinnable::is_main_context()¶
Returns: True if item is the main among twin items.
- Nos\Orm_Behaviour_Twinnable::find_context($context)¶
Parameters: - $context (mixed) –
Can be
- Array of contexts ID.
- all, to receive all contexts.
- Context ID.
- main, to receive main twin item.
Returns: A twinned item, or an array of twinned items, null or array() if none.
- $context (mixed) –
- Nos\Orm_Behaviour_Twinnable::find_main_context()¶
Returns: The main item among the twins. Alias for ->find_context('main').
- Nos\Orm_Behaviour_Twinnable::find_other_context($filter = array())¶
Parameters: - $filter (array) – Array of contexts ID. If set, return only twin items which the context belongs to array $filter.
Returns: Array of twin items, current item exclude.
- Nos\Orm_Behaviour_Twinnable::get_all_context()¶
Returns: Array of all twinned contexts, including the one of the current item.
- Nos\Orm_Behaviour_Twinnable::get_other_context($filter = array())¶
Parameters: - $filter (array) – Array of contexts ID. If set, return only twinned contexts which belongs to array $filter.
Returns: Array of all twinned contexts ID, excluding the one of the current item.
Example¶
<?php
class Model_Page extends \Nos\Orm\Model
{
protected static $_behaviours = array(
'Nos\Orm_Behaviour_Twinnable' => array(
'events' => array('before_insert', 'after_insert', 'before_save', 'after_delete', 'change_parent'),
'context_property' => 'page_context',
'common_id_property' => 'page_context_common_id',
'is_main_property' => 'page_context_is_main',
'invariant_fields' => array(),
),
);
}