public static function get_relationship_class_where(moojon_base_relationship $relationship, moojon_base_model $accessor)
 {
     $accessor_class = get_class($accessor);
     $table = $accessor->get_table(false);
     $key = $relationship->get_key();
     $foreign_table = $relationship->get_foreign_table();
     $foreign_key = $relationship->get_foreign_key();
     $return = '';
     switch (get_class($relationship)) {
         case 'moojon_has_one_relationship':
             $return = "`{$foreign_table}`.`{$key}` = `{$table}`.`{$foreign_key}`";
             break;
         case 'moojon_has_many_relationship':
             $foreign_key = moojon_primary_key::get_foreign_key($accessor_class);
             $return = "`{$table}`.`{$key}` = `{$foreign_table}`.`{$foreign_key}`";
             break;
         case 'moojon_has_many_to_many_relationship':
             $return = 'many_to_many';
             break;
         case 'moojon_belongs_to_relationship':
             $return = "`{$table}`.`{$key}` = `{$foreign_table}`.`{$foreign_key}`";
             break;
     }
     return $return;
 }
Exemple #2
0
function belongs_to_tag(moojon_model_collection $models = null, moojon_base_model $model, moojon_base_column $column, moojon_base_relationship $relationship, $attributes = array())
{
    $return = false;
    $name = $column->get_name();
    $attributes = try_set_name_and_id_attributes($attributes, $model, $column);
    $foreign_key = $relationship->get_foreign_key();
    $key = $relationship->get_key();
    $return = div_tag();
    if ($value = moojon_request::get_or_null($name)) {
        $return->add_child(redirection_tag(moojon_server::redirection()));
        if ($foreign_key_value = moojon_request::get_or_null($foreign_key)) {
            $value = $foreign_key_value;
        } else {
            if ($model->{$key} == $value) {
                $value = 0;
            }
        }
    } else {
        $value = 0;
    }
    $attributes['value'] = $value;
    $return->add_child(hidden_input_tag($attributes));
    return $return;
}