我有下表
create table `groupusers`(
`id` int not null auto_increment,
`user` varchar(100) not null,
`group` varchar(100) not null,
UNIQUE KEY(`id`),
PRIMARY KEY(`user`, `group`)
)
我的模型看起来像这样,
class Model_Groupuser extends ORM{
protected $_table_name = 'groupusers';
public function rules(){
return array(
'user' => array(
array('not_empty'),
array(array($this, 'user_group_not_exists')),
),
'group' => array(
array('not_empty'),
array(array($this, 'user_group_not_exists')),
)
);
}
public function user_group_not_exists($param){
// Need to get other field's value here.
}
}
问题是每次调用user_group_not_exists
时,都会使用单个参数调用它。用户或组。但我需要两者来确定数据库中是否存在组合。
如何获取当前模型的字段值?
答案 0 :(得分:0)
您可以使用$this->object()
函数获取其他字段值。
public function user_group_not_exists($user_or_group){
$obj = $this->object();
$group = $obj['group'];
$user = $obj['user'];
// Check if ($group, $user) pair exists in db here
}
答案 1 :(得分:-1)
您还没有真正命名您的表格列。将它们命名为user
和group
,关系user
和group
会在两者之间产生歧义。
正如kohana所做的那样伟大的事情,你可以访问表字段,关系等,就好像它是一个对象属性。 $i_am_lazy = $object-><field,relation,whatever>
。现在你将你的领域和关系命名为不清楚你想要得到什么。
现在你可以访问这些id的唯一方法就像下面的那样(或者通过$this->object()
的难度,如另一个答案所述,两者都感觉不好):
$user = $this->user->id;
$group = $this->group->id;
但是,我建议只重命名表格列。
create table `groupusers`(
`id` int not null auto_increment,
`user_id` varchar(100) not null,
`group_id` varchar(100) not null,
UNIQUE KEY(`id`),
PRIMARY KEY(`user`, `group`)
)
这样您只需使用$this->user_id
或$this->group_id
。