1

ユーザーが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();
4

2 に答える 2

2

関数を見つけるために渡されたパラメーターが間違っています。

検索関数では、$conditionと$paramsのパラメーターを渡す必要があります。デフォルトでは、$ conditionは空で、$paramsは空の配列です。

find($condition='',$params=array()) 

あなたの解決策は次のようになります:

$whosloggedin=Whosloggedin::model()->find('username=:username',array(':username'=>$users->username) ); 
$whosloggedin->delete();
于 2012-09-13T05:25:01.163 に答える
0

クラスのチェックアウトbeforeLogout()afterLogout()メソッド。CWebUser

それらをオーバーライドして、そこで作業を行うことができます。よくわかりませんafterLogout()が、確かにbeforeLogout()ユーザー名への参照があるはずです。

http://www.yiiframework.com/doc/api/1.1/CWebUser#afterLogout-detail

また(そして補足として):

ログアウトしていないが、セッションがタイムアウトしたユーザーのユーザーテーブルを照会することもできます。

ユーザーの検索について:

findByAttributes()単一またはfindAllByAttributes()複数の行に使用します。

$user = Whosloggedin::model()->findByAttributes(array(
    'username' => Yii->app()->user->name,
));
于 2012-09-13T19:34:41.613 に答える