foreach($db_relations as $name => $relation){
if (array_search($name,$exclude)!==false)
continue;
- $this->addDBRelation($name,$relation);
+ $this->addDBRelation($name,$relation,$col);
}
}
else{
if (array_key_exists($uname,$db_columns))
$this->addDBField($uname,$db_columns[$uname]);
elseif (array_key_exists($uname,$db_relations))
- $this->addDBRelation($uname,$db_relations[$uname]);
+ $this->addDBRelation($uname,$db_relations[$uname],$db_columns[$db_relations[$uname]->getLocalFieldName()]);
}
}
}
}
}
- function addDBRelation($name,$relation){
+ function addDBRelation($name,$relation,$col){
+
+ if (isset($col['notblank']))
+ $blank = false;
+ else
+ $blank = true;
+
if ($relation->getType()==IPF_ORM_Relation::ONE_AGGREGATE){
$name .= "_id";
$db_field = new IPF_Form_DB_Foreignkey('',$name);
- $defaults = array('blank' => true, 'verbose' => $name, 'help_text' => '', 'editable' => true, 'model'=>$relation->getClass());
+ $defaults = array('blank' => $blank, 'verbose' => $name, 'help_text' => '', 'editable' => true, 'model'=>$relation->getClass());
$form_field = $db_field->formField($defaults);
$this->fields[$name] = $form_field;
return;
}
if ($relation->getType()==IPF_ORM_Relation::MANY_AGGREGATE){
$db_field = new IPF_Form_DB_ManyToMany('',$name);
- $defaults = array('blank' => true, 'verbose' => $name, 'help_text' => '', 'editable' => true, 'model'=>$relation->getClass());
+ $defaults = array('blank' => $blank, 'verbose' => $name, 'help_text' => '', 'editable' => true, 'model'=>$relation->getClass());
$form_field = $db_field->formField($defaults);
$this->fields[$name] = $form_field;
return;
const ONE = 0;
const MANY = 2;
-
+
protected $definition = array('alias' => true,
'foreign' => true,
'local' => true,
if (isset($definition[$key])) {
$def[$key] = $definition[$key];
} else {
- $def[$key] = $this->definition[$key];
+ $def[$key] = $this->definition[$key];
}
}
$this->definition = $def;
if (isset($this->definition[$offset])) {
return $this->definition[$offset];
}
-
+
return null;
}
$this->definition[$offset] = false;
}
- public function toArray()
+ public function toArray()
{
return $this->definition;
}
{
return $this->definition['type'];
}
-
+
public function isCascadeDelete()
{
return in_array('delete', $this->definition['cascade']);
{
return $this->definition['local'];
}
-
+
final public function getLocalFieldName()
{
return $this->definition['localTable']->getFieldName($this->definition['local']);
{
return $this->definition['foreign'];
}
-
+
final public function getForeignFieldName()
{
return $this->definition['table']->getFieldName($this->definition['foreign']);