vinegredz Posted March 18, 2019 Share Posted March 18, 2019 Приветствую. Пытаюсь получить данные с такого запроса: {{$feedback_author_count = \IPS\Db::i()->select( 'COUNT(*)', 'cms_custom_database_1', array( 'member_id=? and record_approved=?', $record->author()->member_id, 1 ) )->first();}} Будет ошибка: Column 'member_id' in where clause is ambiguous Если гуглить, выясняется, что нужно указать из какой конкретно таблицы брать данные. Пробовал вот так: {{$feedback_author_count = \IPS\Db::i()->select( 'COUNT(*)', 'cms_custom_database_1', array( 'cms_custom_database_1.member_id=? and record_approved=?', $record->author()->member_id, 1 ) )->first();}} Тоже самоеб удет, если пытаться сортировать по primary_id_field. Вроде запрос синтаксически верный, но не обрабатываются IPB. Подскажите, что делать с такими колонками в базе данные? Link to comment Share on other sites More sharing options...
siv1987 Posted March 18, 2019 Share Posted March 18, 2019 Откуда там надо указать явное поле, если используется одиночный селект из одной таблицы без джойнов. Не может быть такая ошибка в этом запросе, потому что тут только одно поле с member_id. Link to comment Share on other sites More sharing options...
vinegredz Posted March 18, 2019 Author Share Posted March 18, 2019 Вы правы. Ошибка была в другой строке. Для тех, кто будет после меня вот решение. Вот так не работает: {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records1', $record->url(), array(array(\IPS\Db::i()->findInSet('member_id', array($record->author()->member_id)))));}} И отдает ошибку: А вот так работает: {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records1', $record->url(), array(array(\IPS\Db::i()->findInSet('cms_custom_database_1.member_id', array($record->author()->member_id)))));}} Вся суть здесь в cms_custom_database_1.member_id и становится лучше, потому что указываем в какой конкретно таблице использовать колонку member_id. Link to comment Share on other sites More sharing options...
siv1987 Posted March 18, 2019 Share Posted March 18, 2019 Мне одно не понятно, почему \IPS\Db::i()->findInSet если значение $record->author()->member_id это не сет? Нельзя разве просто указать table.member_id = $record->author()->member_id? В вашем случае можно использовать array( array( \IPS\cms\Records1::$databaseTable.'.member_id = ?', $record->author()->member_id ) ) Link to comment Share on other sites More sharing options...
vinegredz Posted March 18, 2019 Author Share Posted March 18, 2019 Спасибо, предложенный вариант тоже работает и подошел кстати в некоторых других местах моего проекта! 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