TemKa_SD Posted August 15, 2018 Share Posted August 15, 2018 Здравствуйте. Разрабатывал модуль в обычной версии, потом добавил DEV версию, включил и появилась ошибка. Whoops\Exception\ErrorException: Invalid argument supplied for foreach() (2)#0 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/sources/DbIntegration/Db.php(229): Whoops\Run->handleError(2, 'Invalid argumen...', '/var/www/dev/da...', 229, Array)#1 /var/www/dev/data/www/dev.wc3.games/system/Helpers/Table/Table.php(485): IPS\sharedstats\DbIntegration\_Db->getRows(Array)#2 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(112): IPS\Helpers\Table\_Table->__toString()#3 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Controller.php(96): IPS\sharedstats\modules\front\stats\_recentGames->manage()#4 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(33): IPS\Dispatcher\_Controller->execute()#5 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Dispatcher.php(146): IPS\sharedstats\modules\front\stats\_recentGames->execute()#6 /var/www/dev/data/www/dev.wc3.games/index.php(13): IPS\_Dispatcher->run()#7 {main} При этом, ошибка проявляется на стандартной версии без моих дополнений от другого разработчика, который пилил этот модуль еще на 4.1 а потом забросил. Соответственно, если он делал в DEV версии то у него всё работало, может быть это связанно из-за разницы в линейках IPS? В стандартном режиме работы форума всё в порядке, ошибок нет. Link to comment Share on other sites More sharing options...
newbie Posted August 15, 2018 Share Posted August 15, 2018 В foreach должен быть массив или объект Вообще код похож на \IPS\Helpers\Table\Db Видимо автор часть кода скопировал из родительского класса. Посмотрите, как там сейчас сейчас. Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 Да, код немного другой. У меня: if( $this->onlySelected !== NULL ) { foreach( $this->onlySelected as $column ) { $selects[] = $column; } if( $this->group !== NULL ) { $this->group = is_array( $this->group ) ? $this->group : array( $this->group ); $this->group = array_unique( array_merge( $this->group, $this->onlySelected ) ); } } else { if ( count( $this->joins ) ) { foreach( $this->joins as $join ) { if ( isset( $join['select'] ) ) { $selects[] = $join['select']; } } } } В исходнике: if ( count( $this->joins ) ) { foreach( $this->joins as $join ) { if ( isset( $join['select'] ) ) { $selects[] = $join['select']; } } } Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 Ну и ниже в некоторых места у меня добавлена переменная: $this->group Таким образом, у меня: /* Now get column headers */ $query = \IPS\Db::i($this->connection)->select( $this->onlySelected ? implode( ', ', $selects ) : '*', $this->table, $where, NULL, array( 0, 1 ), $this->group ); В исходнике: /* Now get column headers */ $query = \IPS\Db::i()->select( ( count( $selects ) ) ? $this->table . '.*, ' . implode( ', ', $selects ) : '*', $this->table, NULL, NULL, array( 0, 1 ) ); Link to comment Share on other sites More sharing options...
newbie Posted August 15, 2018 Share Posted August 15, 2018 $this->onlySelected не используется$this->group тоже удалена в последних версиях Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 (edited) Просто вставить код из новой версии Db? Зачем вообще идет подключение этого файла, если он есть в движке? Edited August 15, 2018 by TemKa_SD Link to comment Share on other sites More sharing options...
newbie Posted August 15, 2018 Share Posted August 15, 2018 Разница в $query = \IPS\Db::i($this->connection)$query = \IPS\Db::i() В первом варианте подключается сторонняя бд Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 А, понял. Спасибо. Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 (edited) Я убрал код от $this->group, теперь не подключается к внешней БД, использует БД IPS. SELECT count(*) FROM `stats_scoredgames` IPS\Db\Exception: Table 'dev_ips.stats_scoredgames' doesn't exist (1146) #0 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(378): IPS\_Db->preparedQuery('/*IPS\\sharedsta...', Array, true) #1 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(440): IPS\Db\_Select->runQuery() #2 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(361): IPS\Db\_Select->rewind() #3 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/sources/DbIntegration/Db.php(250): IPS\Db\_Select->first() #4 /var/www/dev/data/www/dev.wc3.games/system/Helpers/Table/Table.php(485): IPS\sharedstats\DbIntegration\_Db->getRows(Array) #5 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(114): IPS\Helpers\Table\_Table->__toString() #6 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Controller.php(96): IPS\sharedstats\modules\front\stats\_recentGames->manage() #7 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(35): IPS\Dispatcher\_Controller->execute() #8 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Dispatcher.php(146): IPS\sharedstats\modules\front\stats\_recentGames->execute() #9 /var/www/dev/data/www/dev.wc3.games/index.php(13): IPS\_Dispatcher->run() #10 {main} Не пойму, всё перекопал, везде всё норм. Edited August 15, 2018 by TemKa_SD Link to comment Share on other sites More sharing options...
newbie Posted August 15, 2018 Share Posted August 15, 2018 Значит что-то лишнее удалили. Link to comment Share on other sites More sharing options...
TemKa_SD Posted August 15, 2018 Author Share Posted August 15, 2018 Блин, еще раз удалил, и всё в порядке. Бред. Ладно, вроде всё работает, большое спасибо. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now