我正在使用kohana v3.3,我想知道是否有可能在枢轴表中获取/保存另一个数据?
让我们以Auth示例为例:
- 所以我们有3个表(角色,用户,roles_users),我在枢轴表上添加了另一列" date"
表:
创建表(如果不存在)
)roles
(
id
int(11)unsigned not null auto_increment,
name
varchar(32)不为空,
description
varchar(255)不为空,主键(
id
),唯一键
uniq_name
(name
))引擎= innodb默认charset = utf8;
-
创建表(如果不存在)
roles_users
(
user_id
int(10)unsigned not null,
role_id
int(10)unsigned not null,
date
时间戳记而不是默认currault_timestamp,主键(
user_id
,role_id
),键
fk_role_id
(role_id
))引擎= innodb默认charset = utf8;
-
创建表(如果不存在)
users
(
id
int(11)未签名不是null auto_increment,
username
varchar(32)不是null默认值'',
password
varchar(64)不为空,
logins
int(10)unsigned not null默认'0',
last_login
int(10)unsigned,主键(
id
),唯一键
uniq_username
(username
),唯一键
uniq_email
()引擎= innodb默认charset = utf8;
模型
- 模型角色
类Model_auth_role扩展ORM {
保护$ _has_many = array(
)'users' => array('model' => 'User','through' => 'roles_users'),
);
- 用户模型
类Model_auth_user扩展了ORM {
保护$ _has_many = array(
)'roles' => array('model' => 'Role', 'through' =>
'roles_users'),
);
控制器
公共功能action_create()
{
$model = ORM::factory('user'); $model->username = 'myusername'; $model->password = 'password'; $model->email = 'test@example.com'; $model->save(); **// How can i set the "date" to "roles_users" table ?** $model->add('roles', ORM::factory('role')->where('name', '=',
'login') -> find());
}
puboic函数action_get()
{
$ users = orm :: factory('用户') -> find_all();
foreach ($users as $user) { $roles = $user->roles->find_all(); echo $user->email." : <br>"; **// How can i get the "date" from "roles_users" table ?** foreach ($roles as $role) echo " ->".$role->name."<br>"; }
}
问题
我有两个问题:
1-如何将"日期"设置为" roles_users"表?在控制器Action_Create()
上2-如何从" roles_users"表中获取"日期"?在控制器Action_get()
上预先感谢。
如果那是您想要的,则可以做两件事:
- 创建一个单独的
Model_Roles_User
并使用它来创建关系并获得/设置其属性。
这将需要您添加id AUTO_INCREMENT
列,因为Kohana不本地支持化合物键;或成为一个好人并扩展Kohana的功能来支持它: - )
- 将其保持原样,并使用一些自定义查询到
SELECT
或UPDATE
行
这也应该很容易:
$result = DB::select('date')
->from('roles_users')
->where('user_id', '=', $user_id)
->and_where('role_id', '=', $role_id)
->execute();
问题1的答案很容易。数据库已经解决了这个问题!(date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
)