我试图保存视图以便计算。它仅在经过身份验证的用户访问此页面时保存记录。当未经身份验证的用户访问此功能时保存失败。
use Cake\ORM\TableRegistry;
use Cake\Event\Event;
public function beforeFilter(Event $event)
{
$this->Auth->allow(['view']);
}
public function view($photoId = null)
{
$photoViewsTable = TableRegistry::get('PhotoViews');
$photoViews = $photoViewsTable->newEntity();
$photoViews->ip_address = $_SERVER['REMOTE_ADDR'];
$photoViews->photo_id = $photoId;
$photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : 0;
$photoViews->ip_address = $_SERVER['REMOTE_ADDR'];
$photoViewsTable->save($photoViews);
}
答案 0 :(得分:0)
我认为这是因为模型中的验证规则 PhotoViews 。 检查表用户是否存在user_id验证。
在此行中将0更改为null
$photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : null;
请务必检查模型中allowEmpty的验证,并在数据库表中检查null。
您可以通过获取此类验证错误来调试它。
if(!$photoViewsTable->save($photoViews)){
debug($photoViewsTable->getErrors());
}
使用登录进行检查,无需登录。
希望这会有所帮助。