Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP 3中对布尔值调用成员函数format()_Cakephp_Cakephp 3.4 - Fatal编程技术网

在CakePHP 3中对布尔值调用成员函数format()

在CakePHP 3中对布尔值调用成员函数format(),cakephp,cakephp-3.4,Cakephp,Cakephp 3.4,我使用的是CakePHP3.4 我使用 $profile_visit_logs = $this->Users->LogProfileVisits->find() ->where(['user_id' => $user->id]); $profile_visit_logs->select([ 'total_count' => $profile_visit_logs->func()->count('id'), 'uniqu

我使用的是CakePHP3.4

我使用

$profile_visit_logs = $this->Users->LogProfileVisits->find()
   ->where(['user_id' => $user->id]);
$profile_visit_logs->select([
   'total_count' => $profile_visit_logs->func()->count('id'),
   'unique_count' => $profile_visit_logs->func()->count('DISTINCT `ip_address`'),
   'visit_date' => 'MONTH(created)'
])
->group('visit_date')
->limit(10);
但这会导致致命错误为

Error: Call to a member function format() on boolean
File /path_to_app/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php
Line: 161 
同样适用于
日期(创建)
年份(创建)

错误日志

2017-06-02 12:25:45警告:警告(2):DateTimeImmutable::modify()[]:无法解析位置0(5)处的时间字符串(5):在[/path\u to\u app/vendor/cakephp/chronos/src/Traits/frozentimetracit.php,第160行]中出现意外字符
请求URL:/dashboard/profile/ajax\u profile\u性能
参考网址:http://example.com/dashboard
客户端IP:客户端IP
跟踪:
Cake\Error\BaseErrorHandler::handleError()-CORE/src/Error/BaseErrorHandler.php,第153行
DateTimeImmutable::modify()-[internal],第行??
Cake\Chronos\Date::modify()-ROOT/vendor/cakephp/Chronos/src/Traits/frozentimetracit.php,第160行
Cake\Database\Type\DateTimeType::toPHP()-CORE/src/Database/Type/DateTimeType.php,第139行
Cake\Database\Type\DateType::toPHP()-CORE/src/Database/Type/DateType.php,第90行
Cake\Database\FieldTypeConverter::\uu invoke()-CORE/src/Database/FieldTypeConverter.php,第78行
Cake\Database\Statement\CallbackStatement::fetch()-CORE/src/Database/Statement/CallbackStatement.php,第59行
Cake\ORM\ResultSet::_fetchResult()-CORE/src/ORM/ResultSet.php,第484行
Cake\ORM\ResultSet::valid()-CORE/src/ORM/ResultSet.php,第276行
App\Controller\Dashboard\ProfileController::ajaxProfilePerformance()-App/Controller/Dashboard/ProfileController.php,第113行
Cake\Controller\Controller::invokeAction()-CORE/src/Controller/Controller.php,第440行
Cake\Http\ActionDispatcher::_invoke()-CORE/src/Http/ActionDispatcher.php,第119行
Cake\Http\ActionDispatcher::dispatch()-CORE/src/Http/ActionDispatcher.php,第93行
Cake\Http\BaseApplication::\uu invoke()-CORE/src/Http/BaseApplication.php,第78行
Cake\Http\Runner::\uu invoke()-CORE/src/Http/Runner.php,第65行
Cake\Routing\Middleware\RoutingMiddleware::\uu invoke()-CORE/src/Routing/Middleware/RoutingMiddleware.php,第59行
Cake\Http\Runner::\uu invoke()-CORE/src/Http/Runner.php,第65行
Cake\Routing\Middleware\AssetMiddleware::\uu invoke()-CORE/src/Routing/Middleware/AssetMiddleware.php,第88行
Cake\Http\Runner::\uu invoke()-CORE/src/Http/Runner.php,第65行
Cake\Error\Middleware\ErrorHandlerMiddleware::\uu invoke()-CORE/src/Error/Middleware/ErrorHandlerMiddleware.php,第92行
Cake\Http\Runner::\uu invoke()-CORE/src/Http/Runner.php,第65行
Cake\Http\Runner::run()-CORE/src/Http/Runner.php,第51行
Cake\Http\Server::run()-CORE/src/Http/Server.php,第80行
[main]-ROOT/webroot/index.php,第37行
2017-06-02 12:25:45错误:致命错误(1):调用[/path_to_app/vendor/cakephp/chronos/src/Traits/frozentimetracit.php,第161行]中布尔值上的成员函数format()
请求URL:/dashboard/profile/ajax\u profile\u性能
参考网址:http://profplus.in/dashboard
客户端IP:客户端IP
跟踪:
Cake\Error\BaseErrorHandler::handleFatalError()-CORE/src/Error/BaseErrorHandler.php,第223行
Cake\Error\BaseErrorHandler::Cake\Error\{closure}()-CORE/src/Error/BaseErrorHandler.php,第105行
[main]-[internal],行??
2017-06-02 12:25:46警告:标题已发送到app/vendor/cakephp/cakephp/src/Error/Debugger.php:822
2017-06-02 12:25:46错误:[Cake\Error\FatalErrorException]调用第161行的app/vendor/cakephp/chronos/src/Traits/frozentimetracit.php中布尔值上的成员函数format()
请求URL:/dashboard/profile/ajax\u profile\u性能
参考网址:http://example.com/dashboard
客户端IP:客户端IP
堆栈跟踪:
#0/path_to_app/vendor/cakephp/cakephp/src/Error/BaseErrorHandler.php(105):Cake\Error\BaseErrorHandler->handleFatalError(1,‘调用membe…’,‘/home/thebornen…’,161)
#1[内部函数]:Cake\Error\BaseErrorHandler->Cake\Error\{closure}()
#2{main}

尝试此代码,以便它知道要使用的型号:

    $this->loadModel('LogProfileVisits');

查看stacktrace,ORM似乎将
visit\u date
列视为
date
类型,您可以通过调用
DateType::toPHP()
的行看出:

Cake\Database\Type\DateType::toPHP() - CORE/src/Database/Type/DateType.php, line 90
这就是开始出错的地方,数字
5
(创建的
MONTH的结果)
)不是有效的日期时间值,因此您最终会得到一个
null
值,在尝试对其调用方法时会导致致命错误:

警告(2):DateTimeImmutable::modify()[…]未能分析时间字符串(5)

DATE()
YEAR()
的结果是有效的,前者显然会返回一个可解析的日期,而后者是一年,这可能不明显,但也可以解析,它将被视为一个时间值,例如
2017
将被解释为
20:17
。您可能会得到一个无用/错误的日期对象,但它不会出错

长话短说,您需要弄清楚为什么ORM将列视为
DATE
类型。这当然不是默认值,默认情况下,计算/虚拟列将被视为字符串。如果
visit_date
不是您在评论中所述的现有列,那么它可能在某一点上是一列,并且您还没有清除缓存

应该没有必要解决这个问题,这应该是正确的解决您的端。悬停您可以尝试更改select/typemap以查看它是否有任何区别,还应该尝试在整个控制流中调试它,以便了解可能出现的问题:

$query->getSelectTypeMap()->addDefaults(['visit_date' => 'integer']);

无论何时收到错误,请始终发布完整的错误,也就是说,包括完整的stacktrace(理想情况下是从日志中以适当可读的方式复制的)!
visit\u date
是否可能是现有的(日期时间类型的)表列?@ndm更新了带有错误日志的问题,
visit\u date
是否是现有的colu
$query->getSelectTypeMap()->addDefaults(['visit_date' => 'integer']);
$query->getTypeMap()->addDefaults(['visit_date' => 'integer']);