Опубликовано: 18 марта 20196 г Приветствую. Пытаюсь получить данные с такого запроса: {{$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. Подскажите, что делать с такими колонками в базе данные?
Опубликовано: 18 марта 20196 г Откуда там надо указать явное поле, если используется одиночный селект из одной таблицы без джойнов. Не может быть такая ошибка в этом запросе, потому что тут только одно поле с member_id.
Опубликовано: 18 марта 20196 г Автор Вы правы. Ошибка была в другой строке. Для тех, кто будет после меня вот решение. Вот так не работает: {{$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.
Опубликовано: 18 марта 20196 г Мне одно не понятно, почему \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 ) )
Опубликовано: 18 марта 20196 г Автор Спасибо, предложенный вариант тоже работает и подошел кстати в некоторых других местах моего проекта!
Приветствую.
Пытаюсь получить данные с такого запроса:
{{$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. Подскажите, что делать с такими колонками в базе данные?