按列删除yiiframework模型中的记录

时间:2012-09-13 05:12:04

标签: php yii

当用户按照用户名登录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();

2 个答案:

答案 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,
));