当用户按照用户名登录Whosloggedin模型时,如何删除yiiframework中的记录?
表 - whosloggedin
CREATE TABLE `erc_whosloggedin` (
`id` int(11) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`complete_name` varchar(95) DEFAULT NULL,
`date` date DEFAULT NULL,
`time` time DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我尝试过这样的事情
$whosloggedin=Whosloggedin::model()->find($users->username);
$whosloggedin->delete();
答案 0 :(得分:2)
传递给find函数的参数是错误的。
在Find函数中,我们必须传递$ condition& $ params参数,默认情况下$ condition是空的& $ params是一个空数组。
find($condition='',$params=array())
你的解决方案是:
$whosloggedin=Whosloggedin::model()->find('username=:username',array(':username'=>$users->username) );
$whosloggedin->delete();
答案 1 :(得分:0)
查看beforeLogout()
课程的afterLogout()
和CWebUser
方法。
您可以覆盖它们并在那里完成工作。
不确定afterLogout()
但肯定在beforeLogout()
中仍然应该提到用户名。
http://www.yiiframework.com/doc/api/1.1/CWebUser#afterLogout-detail
(也在旁注):
您可能还想查询用户表,查找尚未注销但会话超时的用户。
关于寻找用户:
将findByAttributes()
用于单个或findAllByAttributes()
用于超过1行。
$user = Whosloggedin::model()->findByAttributes(array(
'username' => Yii->app()->user->name,
));