我正在CakeDC/users插件中进行一些自定义。我创建了一个名为“ user_logs”的表,该表由与CakeDC/users提供的实际“用户”表的外键关系组成。
我使用以下命令烘焙了“ user_logs”模型:
bin \ cake烘焙模型UserLogs --plugin CakeDC / Users
用户登录后,我只是在“ user_logs”表中生成日志事务。我在addrlen
函数下的“ /vendor/cakedc/users/src/Controller/Traits/LoginTrait.php”文件中添加了以下行:
$ this-> activity_log('登录','登录',$ user ['id']);
在src / Controller / AppController.php文件中添加了activity_log函数:
_afterIdentifyUser
vendor / cakedc / users / src / Model / Entity / UserLog.php文件代码:
function activity_log($page, $action, $id=null){
$this->loadModel(‘CakeDC/Users.Userlogs’);
$dataUserLog = $this->Userlogs->newEntity();
$dataUserLog['user_id'] = $this->request->session()->read('Auth.User.id');
if(!empty($id)){
$dataUserLog['reference_id'] = $id;
} else {
$dataUserLog['reference_id'] = 0;
}
$dataUserLog['activity_timestamp'] = date('Y-m-d H:i:s');
$dataUserLog['page'] = $page;
$dataUserLog['action'] = $action;
$this->Userlogs->save($dataUserLog);
}
vendor / cakedc / users / src / Model / Table / UserLogsTable.php文件代码:
namespace CakeDC\Users\Model\Entity;
use Cake\ORM\Entity;
class UserLog extends Entity
{
protected $_accessible = [
‘user_id’ => true,
‘reference_id’ => true,
‘activity_timestamp’ => true,
‘page’ => true,
‘action’ => true,
‘user’ => true
];
}
令人惊讶的部分是!这在localhost上有效,但是当我在服务器上上传代码时,它不起作用。在本地主机上,我有PHP v7.3.4,在服务器上,我有PHP v5.6.40。有人可以暗示这是怎么回事,为什么它在localhost而不是在服务器上工作吗?一切都一样我几乎也完成了清除服务器上模型缓存的所有事情,但是没有运气。请帮忙。
不太确定为什么CAKEPHP在服务器上查找表“ proposal_db.userlogs”,而我在本地和服务器上都创建了“ user_logs”表。请提出建议?