0 Пользователей и 1 Гость просматривают эту тему.
  • 32 Ответов
  • 253 Просмотров
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Проблема с group_concat
« : 23.11.2020, 14:48:57 »
Добрый день.
Создаю свой компонент и надо в админке вывести поле с GROUP_CONCAT.
Таблицы
Код
CREATE TABLE IF NOT EXISTS `#__aepetitions` (
`id` int(11) NOT NULL auto_increment,
`title` VARCHAR(200) NULL,
`alias` VARCHAR(200) NOT NULL COMMENT '№ петиції',
`asset_id` INTEGER UNSIGNED NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`introtext` TEXT NOT NULL COMMENT 'Вступний текст',
`fulltext` TEXT NOT NULL COMMENT 'Вступний текст',
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() COMMENT 'Дата створення петиції',
`publish_down` DATETIME NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Дата закінчення збору підписів',
`ordering` INT(11) NOT NULL,
`metakey` TEXT NOT NULL,
`metadesc` TEXT NOT NULL,
`hits` INT(11) NOT NULL,
`created_by` INT(11) NOT NULL COMMENT 'Хто створив',
`published` INT(2) NOT NULL DEFAULT '1' COMMENT 'Статус петиції: 1 - Триває збір підписів, 2 - На розгляді, 3 - З відповіддю, 4 - Не підтримано',
`params` TEXT NOT NULL,
`catid` INT(11) NOT NULL DEFAULT '0',
`vidpovid` TEXT NULL COMMENT 'Відповідь на петицію',
`votescount` INT(11) NOT NULL DEFAULT '1' COMMENT 'Кількість голосів',
`pidpucu` TEXT NULL COMMENT 'Хто підтримав = 1,2,3,4....',
`isconfirmed` INT(3) DEFAULT '0' NOT NULL COMMENT 'Автоматично оброблено',
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

CREATE TABLE IF NOT EXISTS `#__pidpysy` (
`aepetitions_id` INT(11) NOT NULL,
`users_id` INT(11) NOT NULL,
PRIMARY KEY (`aepetitions_id`, `users_id`)
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
Модель
Код
	protected function getListQuery()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 't1.id,t1.title,t1.alias,t1.asset_id,t1.introtext,t1.fulltext,t1.created,t1.publish_down,t1.ordering,t1.metakey,t1.metadesc,t1.hits');
$query->select( 't1.published as state,t1.params,t1.catid,t1.vidpovid,t1.votescount,t1.pidpucu,t1.isconfirmed,u.username as created_by,u.id as author_id, u.name as author_name,GROUP_CONCAT(up.name separator \' \') AS pidpysy_name ' );

$query->from( '#__aepetitions as t1' );
$query->join( 'LEFT', '#__users AS u ON u.id = t1.created_by' );
$query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->group( 't1.id');

$published = $this->getState( 'filter.published' );
if ( is_numeric( $published ) ) {
$query->where( 't1.published=' . (int)$published );
}
$authorId = $this->getState( 'filter.author_id' );
if ( is_numeric( $authorId ) ) {
$query->where( 'u.id=' . $authorId );
}
$search = $this->getState( 'filter.search' );
if ( !empty( $search ) ) {
$search = $this->getDbo()->Quote( '%' . $this->getDbo()->escape( $search, true ). '%' );
$query->where( '(t1.title LIKE ' . $search . ' OR t1.alias LIKE ' . $search . ')' );
}
$orderCol = $this->state->get( 'list.ordering' );
$orderDirn = $this->state->get( 'list.direction' );
$query->order( $this->getDbo()->escape( $orderCol . ' ' . $orderDirn ) );
return $query;
}
В форме добавил поле
Код
       <field
                name="pidpysy_name"
                type="textarea"
rows="10"
                readonly="true"
                />
С другими моими полями (vidpovid,votescount,isconfirmed) проблем нет.
А вот поле pidpysy_name  не выводится ни в какую :(, хотя сам запрос SQL редакторе выполняется без проблем
В чем может быть проблема?
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #1 : 23.11.2020, 15:00:11 »
Вывод поля
Код
<?php echo $this->form->getInput( 'pidpysyname' );?>
Причем в списке я ето поле вижу
echo $item->pidpysyname;
А в форме редактирования нет
« Последнее редактирование: 23.11.2020, 15:06:23 от antarey »
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #2 : 23.11.2020, 15:01:41 »
Вывод поля
Код
<?php echo $this->form->getInput( 'pidpysyname' );?>
должно быть pidpysy_name
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #3 : 23.11.2020, 15:16:24 »
должно быть pidpysy_name
поменял кругом на pidpysyname - толку 0
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #4 : 23.11.2020, 15:18:21 »
Покажите весь код модели и файла вывода
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #5 : 23.11.2020, 15:24:57 »
Покажите весь код модели и файла вывода
модель
Код
<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * @author Antarey
 */
class AepetitionsModelPepitionslists extends JModelList
{

/**
* Конструктор класса
* @param Array $config
*/
public function __construct( $config = array() )
{
if ( empty( $config['filter_fields'] ) ) {
$config['filter_fields'] = array( 'title', 'state', 'ordering', 'created_by', 'created', 'id', 'author_id' );
}
parent::__construct( $config );
}

/**
* @param String $ordering
* @param String $direction
*/
protected function populateState( $ordering = null, $direction = null )
{
if ( $layout = JFactory::getApplication()->input->get( 'layout' ) ) {
$this->context .= '.' . $layout;
}
$search = $this->getUserStateFromRequest( $this->context . '.filter.search', 'filter_search' );
$this->setState( 'filter.search', $search );
$published = $this->getUserStateFromRequest( $this->context . '.filter.published', 'filter_published', '' );
$this->setState( 'filter.published', $published );
$authorId = $this->getUserStateFromRequest( $this->context . '.filter.author_id', 'filter_author_id' );
$this->setState( 'filter.author_id', $authorId );
parent::populateState( 'id', 'desc' );
}

/**
* @param string $id
* @return string
*/
protected function getStoreId( $id = '' )
{
$id .= ':' . $this->getState( 'filter.search' );
$id .= ':' . $this->getState( 'filter.published' );
$id .= ':' . $this->getState( 'filter.author_id' );
return parent::getStoreId( $id );
}

/**
* Составление запроса для получения списка записей
* @return JDatabaseQuery
*/
protected function getListQuery()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 't1.id,t1.title,t1.alias,t1.asset_id,t1.introtext,t1.fulltext,t1.created,t1.publish_down,t1.ordering,t1.metakey,t1.metadesc,t1.hits'); //SEPARATOR \'<br>\'
$query->select( 't1.published as state,t1.params,t1.catid,t1.vidpovid,t1.votescount,t1.pidpucu,t1.isconfirmed,u.username as created_by,u.id as author_id, u.name as author_name,GROUP_CONCAT(up.name ) AS pidpysyname ' );



$query->from( '#__aepetitions as t1' );
$query->join( 'LEFT', '#__users AS u ON u.id = t1.created_by' );
$query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );

$query->group( 't1.id');

$published = $this->getState( 'filter.published' );
if ( is_numeric( $published ) ) {
$query->where( 't1.published=' . (int)$published );
}
$authorId = $this->getState( 'filter.author_id' );
if ( is_numeric( $authorId ) ) {
$query->where( 'u.id=' . $authorId );
}
$search = $this->getState( 'filter.search' );
if ( !empty( $search ) ) {
$search = $this->getDbo()->Quote( '%' . $this->getDbo()->escape( $search, true ). '%' );
$query->where( '(t1.title LIKE ' . $search . ' OR t1.alias LIKE ' . $search . ')' );
}
$orderCol = $this->state->get( 'list.ordering' );
$orderDirn = $this->state->get( 'list.direction' );
$query->order( $this->getDbo()->escape( $orderCol . ' ' . $orderDirn ) );
return $query;
}

/**
* Авторы записей
* @return    JDatabaseQuery
*/
public function getAuthors()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 'u.id AS value, u.name AS text' );
$query->from( '#__users AS u' );
$query->join( 'INNER', '#__aepetitions AS c ON c.created_by = u.id' );
$query->group( 'u.id, u.name' );
$query->order( 'u.name' );
return $this->getDbo()->setQuery( $query )->loadObjectList();
}
}
Вывод списка
Код
<?php
/** @var $this AepetitionsViewPepitionslists */
defined( '_JEXEC' ) or die;// No direct access
JHtml::_( 'bootstrap.tooltip' );
JHtml::_( 'behavior.multiselect' );
JHtml::_( 'formbehavior.chosen', 'select' );
$user = JFactory::getUser();
$userId = $user->get( 'id' );

$listOrder = $this->escape( $this->state->get( 'list.ordering' ) );
$listDirn = $this->escape( $this->state->get( 'list.direction' ) );
$saveOrder = $listOrder == 'ordering';

if ( $saveOrder ) {
$saveOrderingUrl = 'index.php?option=com_aepetitions&task=pepitionslists.saveOrderAjax&tmpl=component';
JHtml::_( 'sortablelist.sortable', 'articleList', 'adminForm', strtolower( $listDirn ), $saveOrderingUrl );
}
$sortFields = $this->getSortFields();
?>
<script type="text/javascript">
Joomla.orderTable = function () {
var table = document.getElementById("sortTable");
var direction = document.getElementById("directionTable");
var order = table.options[table.selectedIndex].value;
if (order != '<?php echo $listOrder; ?>') {
dirn = 'asc';
} else {
dirn = direction.options[direction.selectedIndex].value;
}
Joomla.tableOrdering(order, dirn, '');
}
</script>

<form action="<?php echo JRoute::_( 'index.php?option=com_aepetitions&view=pepitionslists' ); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty( $this->sidebar )): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>

<?php
// Search tools bar
echo JLayoutHelper::render( 'joomla.searchtools.default', array( 'view' => $this ) );
?>

<div class="table-responsive text-left">
<table class="table table-striped" id="articleList">
<thead class="bg-info border rounded border-primary shadow-sm">
<tr>
<th width="1%">
<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_( 'JGLOBAL_CHECK_ALL' ); ?>" onclick="Joomla.checkAll(this)" />
</th>
<th width="2%">
<?php echo JHtml::_( 'searchtools.sort', 'JSTATUS', 'state', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_PETITION_NUMBER', 'title', $listDirn, $listOrder ); ?>
</th>
<th>
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_INTRO_TEXT', 'introtext', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'JAUTHOR', 'created_by', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_CREATION_DATE', 'created', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_DOWN_DATE', 'publish_down', $listDirn, $listOrder ); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ( $this->items as $i => $item ) :
$item->max_ordering = 0;
$ordering = ( $listOrder == 'a.ordering' );
$canEdit = $user->authorise( 'core.edit', '#__aepetitions.' . $item->id );
$canCheckin = $user->authorise( 'core.manage', 'com_aepetitions' ) || $item->checked_out == $userId || $item->checked_out == 0;
$canEditOwn = $user->authorise( 'core.edit.own', '#__aepetitions.' . $item->id ) && $item->created_by == $userId;
$canChange = $user->authorise( 'core.edit.state', '#__aepetitions.' . $item->id ) && $canCheckin;
?>
<tr class="row<?php echo $i % 2; ?>">

<td class="center">
<?php echo JHtml::_( 'grid.id', $i, $item->id ); ?>
</td>

<td class="center">
<?php
$status = '';
switch ($item->state) {
case 1:
$status = '<span class="icon-file-add" title="Триває збір підписів" style="font-size:18px;color:coral;"></span>';
break;
case 2:
$status = '<span class="icon-eye-open" title="На розгляді" style="font-size:18px;color:green;"></span>';
break;
case 3:
$status = '<span class="icon-pencil" title="З відповіддю" style="font-size:18px;color:blue;"></span>';
break;
case 4:
$status = '<span class="icon-thumbs-down" title="Не підтримано" style="font-size:18px;color:red;"></span>';
break;
}
echo $status;
?>
</td>

<td>
<?php if ( $canEdit || $canEditOwn ) : ?>
<a href="<?php echo JRoute::_( 'index.php?option=com_aepetitions&task=pepitionslist.edit&id=' . $item->id ); ?>" title="<?php echo JText::_( 'JACTION_EDIT' ); ?>">
<?php echo $this->escape( $item->title ); ?></a>
<?php else : ?>
<span title="<?php echo JText::sprintf( 'JFIELD_ALIAS_LABEL', $this->escape( $item->alias ) ); ?>"><?php echo $this->escape( $item->title ); ?></span>
<?php endif; ?>
</td>

<td style="-webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical;overflow: hidden;">
<?php echo $this->escape( $item->introtext ); ?>
</td>

<td>
<?php echo $this->escape( $item->author_name ); ?>
</td>

<td>
<?php echo JHtml::_( 'date', $item->created, JText::_( 'DATE_FORMAT_LC4' ) ); ?>
</td>

<td>
<?php echo JHtml::_( 'date', $item->publish_down, JText::_( 'DATE_FORMAT_LC4' ) ); ?>
</td>

</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>


<?php echo $this->pagination->getListFooter(); ?>

<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHtml::_( 'form.token' ); ?>

</div>
</form>
Форма редактирования
Код
<?php
/** @var $this AepetitionsViewPepitionslist */
defined( '_JEXEC' ) or die;// No direct access
JHtml::_('bootstrap.tooltip');
//JHtmlBootstrap::loadCss();
JHtml::_( 'behavior.formvalidation' );
JHtml::_( 'behavior.keepalive' );
JHtml::_( 'formbehavior.chosen', 'select' );
$input = JFactory::getApplication()->input;
$needvotes = JComponentHelper::getParams('com_aepetitions')->get('needvotes');


JFactory::getDocument()->addStyleSheet('/administrator/components/com_aepetitions/media/css/bootstrap.min.css');
JFactory::getDocument()->addStyleSheet('components/com_aepetitions/media/css/aeadm.css');

?>
<script type="text/javascript">
Joomla.submitbutton = function (task) {
if (task == 'pepitionslist.cancel' || document.formvalidator.isValid(document.id('item-form'))) {
<?php echo $this->form->getField( 'text' )->save(); ?>
Joomla.submitform(task, document.getElementById('item-form'));
} else {
alert('<?php echo $this->escape( JText::_( 'JGLOBAL_VALIDATION_FORM_FAILED' ) ); ?>');
}
}
</script>
<form action="<?php echo JRoute::_( 'index.php?option=com_aepetitions&id=' . $this->form->getValue( 'id' ) ); ?>" method="post" name="adminForm" id="item-form" class="form-validate" enctype="multipart/form-data">



<div class="form-horizontal">

<div class="form-row d-flex d-md-flex flex-row justify-content-md-start align-items-md-center" style="margin: 4px 0;">
<div class="col" style="padding: 4px 16px">
<button onclick="Joomla.submitbutton('pepitionslist.cancel');" class="btn btn-small button-cancel">
<span class="icon-cancel" aria-hidden="true"></span><?php echo JText::_( 'JTOOLBAR_CLOSE');?></button>
</div>
</div>

<div class="form-row d-flex d-md-flex flex-row justify-content-md-start align-items-md-center border border-primary rounded" style="margin: 4px 0;">
<div class="col-md-6" style="padding: 4px 16px">
<label for="jform_alias"><?php echo JText::_( 'COM_AEPETITIONS_NUMBER');?></label>
<?php echo $this->form->getInput( 'alias' );?>
</div>
<div class="col-md-6" style="padding: 4px 16px;">
<label for="jform_created_by"><?php echo JText::_( 'COM_AEPETITIONS_AUTOR');?></label>
<?php echo $this->form->getInput( 'created_by' );?>
</div>
</div>
<div class="form-row d-flex flex-row border border-primary rounded" style="margin: 4px 0;">
<div class="col d-md-flex flex-column">
<div class="form-row d-flex d-md-flex  flex-column flex-fill" style="padding: 4px 16px">
<label for="jform_created"><?php echo JText::_( 'COM_AEPETITIONS_CREATION_DATE');?></label>
<?php echo $this->form->getInput( 'created' );?>
</div>
<div class="form-row d-flex d-md-flex flex-column flex-fill" style="padding: 4px 16px">
<label for="jform_publish_down"><?php echo JText::_( 'COM_AEPETITIONS_DOWN_DATE');?></label>
<?php echo $this->form->getInput( 'publish_down' );?>
</div>
</div>
<div class="col">
<div class="form-row">
<div class="col-md-6" style="padding: 4px 16px;">
<label for="needvotes"><?php echo JText::_( 'COM_AEPETITIONS_NEEDVOTES');?></label>
<input class="form-control" type="number" id="needvotes" readonly="" value="<?php echo $needvotes;?>">
</div>
<div class="col-md-6" style="padding: 4px 16px;">
<label for="jform_votescount"><?php echo JText::_( 'COM_AEPETITIONS_VOTES');?></label>
<?php echo $this->form->getInput( 'votescount' );?>
</div>
</div>
</div>
</div>
<div class="form-row d-flex flex-row border border-primary rounded" style="margin: 4px 0;">
<div class="col-8 d-flex flex-column" style="padding: 4px 16px;">
<label for="jform_introtext"><?php echo JText::_( 'COM_AEPETITIONS_AINTRO');?></label>
<?php echo $this->form->getInput( 'introtext' );?>
<label for="jform_fulltext"><?php echo JText::_( 'COM_AEPETITIONS_AFULL');?></label>
<?php echo $this->form->getInput( 'fulltext' );?>
</div>
<div class="col-4" style="padding: 4px 16px;">
<label for="jform_pidpucu_name"><?php echo JText::_( 'COM_AEPETITIONS_PIDPYSY');?></label>
<?php echo $this->form->getInput( 'pidpysyname' );?>
</div>
</div>


</div>

<input type="hidden" name="task" value="" />
<input type="hidden" name="return" value="<?php echo $input->getCmd( 'return' ); ?>" />
<?php echo JHtml::_( 'form.token' ); ?>
</form>
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #6 : 23.11.2020, 15:29:50 »
А теперь файл модели формы редактирования
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #7 : 23.11.2020, 15:36:00 »
А теперь файл модели формы редактирования
Код
<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * Модель редактирования текущего элемента
 * @author Antarey
 */
class AepetitionsModelPepitionslist extends JModelAdmin {

/**
* загрузка текущей формы
* @param Array $data
* @param Boolean $loadData
* @return Object form data
*/
public function getForm( $data = array( ), $loadData = true ) {
$form = $this->loadForm( 'com_aepetitions.pepitionslist', 'pepitionslist', array( 'control' => 'jform', 'load_data' => $loadData ) );
if ( empty( $form ) ) {
return false;
}
$user = JFactory::getUser();
if ( !$user->authorise( 'core.edit.state', '#__aepetitions.' . $this->getState( 'extdataedit.id' ) ) ) {
$form->setFieldAttribute( 'published', 'disabled', 'true' );
$form->setFieldAttribute( 'published', 'filter', 'unset' );
}
return $form;
}

/**
* @param Int $id (object identifier)
* @return Object (current item)
*/
public function getItem( $id = null ) {
if ( $item = parent::getItem( $id ) ) {
$item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;
}
return $item;
}

/**
* @param string $type
* @param string $prefix
* @param array $config
* @return JTable|mixed
*/
public function getTable( $type = 'aepetitions', $prefix = 'Table', $config = array( ) ) {
return JTable::getInstance( $type, $prefix, $config );
}

/**
* Загрузка данных в форму
* @return Object
*/
protected function loadFormData() {
$data = JFactory::getApplication()->getUserState( 'com_aepetitions.edit.pepitionslist.data', array() );
if ( empty( $data ) ) {
$data = $this->getItem();
}
return $data;
}

/**
* Запрет удаления записи
* @param object $record
* @return bool
*/
protected function canDelete( $record )
{
if ( !empty( $record->id ) ) {
return JFactory::getUser()->authorise( 'core.delete', '#__aepetitions.' . (int)$record->id );
}
}

/**
* Запрет изменения состояния
* @param object $record
* @return bool
*/
protected function canEditState( $record )
{
$user = JFactory::getUser();

// Check for existing article.
if ( !empty( $record->id ) ) {
return $user->authorise( 'core.edit.state', '#__aepetitions.' . (int)$record->id );
} // New article, so check against the category.
elseif ( !empty( $record->catid ) ) {
return $user->authorise( 'core.edit.state', '#__aepetitions.' . (int)$record->catid );
} // Default to component settings if neither article nor category known.
else {
return parent::canEditState( 'com_aepetitions' );
}
}

}
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #8 : 23.11.2020, 15:38:02 »
Запрос который содержит GROUP_CONCAT находится в файле модели списка, а вам нужно его выполнять в файле формы
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #9 : 23.11.2020, 15:42:24 »
Запрос который содержит GROUP_CONCAT находится в файле модели списка, а вам нужно его выполнять в файле формы
Я только учусь.
Подскажите куда запихнуть запрос?
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #10 : 23.11.2020, 15:43:23 »
Если я правильно понял запрос из модели списка перенести в
Код
public function getItem( $id = null )
??
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #11 : 23.11.2020, 15:44:13 »
Если я правильно понял запрос из модели списка перенести в
Код
public function getItem( $id = null )
??
да
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #12 : 23.11.2020, 15:46:53 »
А как правильно ето реализовать?
А то
Код
		if ( $item = parent::getItem( $id ) ) {
$item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;
}
return $item;
Я не пойму где формируется запрос? в хелпере getItem нету
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #13 : 23.11.2020, 15:53:08 »
Код: php
public function getItem( $id = null )
{
    if ( $item = parent::getItem( $id ) )
    {
        $item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;

        $query = $this->getDbo()->getQuery( true );
        $query->select( 'GROUP_CONCAT(name)' );

        $query->from( '#__users' );
        $query->where('u.id = ' . $item->created_by);// условие исправьте на свое
        $item->pidpysyname = $db->setQuery($query)->loadResult();
    }

    return $item;
}
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #14 : 23.11.2020, 16:04:08 »
Код: php
public function getItem( $id = null )
{
    if ( $item = parent::getItem( $id ) )
    {
        $item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;

        $query = $this->getDbo()->getQuery( true );
        $query->select( 'GROUP_CONCAT(name)' );

        $query->from( '#__users' );
        $query->where('u.id = ' . $item->created_by);// условие исправьте на свое
        $item->pidpysyname = $db->setQuery($query)->loadResult();
    }

    return $item;
}
если я правильно понял - то к запросу к таблице
Код
select * from #__aepetitions where id=:id
добавляется запрос к таблице #__users?
У меня там получается в запросе связка двух таблиц
      $query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
      $query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
тогда мне надо тоже ж join добавить?
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #15 : 23.11.2020, 16:06:57 »
Я без понятия какое значение храниться в таблицах...
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #16 : 23.11.2020, 16:07:04 »
или принцип другой?
и в поле $item->pidpysyname просто заганяются результаты запроса?
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #17 : 23.11.2020, 16:08:39 »
Я без понятия какое значение храниться в таблицах...
Я просто не понял сам принцип формирования $item->pidpysyname
как по предыдущему ответу?
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #18 : 23.11.2020, 16:13:06 »
Я просто не понял сам принцип формирования $item->pidpysyname
как по предыдущему ответу?
Код: sql
$query->select( 'GROUP_CONCAT(up.name)');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #19 : 23.11.2020, 16:18:04 »
$query->select( 'GROUP_CONCAT(up.name)');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
Call to a member function setQuery() on null
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #20 : 23.11.2020, 16:19:16 »
$this->getDbo()
Код: php
$db = $this->getDbo();
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #21 : 23.11.2020, 16:23:38 »
сам запрос правильный
Код
SELECT  GROUP_CONCAT(up.name)
from dwqhk_pidpysy AS p
LEFT join dwqhk_users AS up on up.id = p.users_id
where p.aepetitions_id = 1
а че joomle не нравиться?
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #22 : 23.11.2020, 16:27:08 »
А если вот так
Код: php
$db = $this->getDbo();

$query = $db->getQuery(true);
$query->select( 'name');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$pidpysyname = $db->setQuery($query)->loadAssocList();
$item->pidpysyname = implode(' ', array_column($pidpysyname, 'name'));
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #23 : 23.11.2020, 16:29:28 »
А если вот так
Код: php
$db = $this->getDbo();

$query = $db->getQuery(true);
$query->select( 'name');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$pidpysyname = $db->setQuery($query)->loadAssocList();
$item->pidpysyname = implode(' ', array_column($pidpysyname, 'name'));
уже переделал, получилось, + к карме
Хотя в модели списка
Код
$query = $this->getDbo()->getQuery( true );
нормально работает
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #24 : 23.11.2020, 16:35:30 »
Вариант
Код
			$db = $this->getDbo();
$query = $db->getQuery( true );
$query->select( 'GROUP_CONCAT(up.name SEPARATOR \'<br>\')');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
тоже работает.
Есть еще одна хотелка - если ее возможно реализовать в запросе
Получаю список Иванов<br>Петров - как заставить понимать тег <br>
В форме
Код
        <field
                name="pidpysyname"
                type="textarea"
rows="10"
                label="COM_AEPETITIONS_PIDPYSY"
                description="COM_AEPETITIONS_PIDPYSY"
                readonly="true"
filter="RAW"
                />
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #25 : 23.11.2020, 16:38:12 »
Код: php
echo str_replace('<br>', "\n", $item->pidpysyname);
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #26 : 23.11.2020, 16:39:21 »
Получаю список Иванов<br>Петров - как заставить понимать тег <br>
Не понятно, зачем вы выводите это в textarea?
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #27 : 23.11.2020, 16:41:29 »
Код: php
echo str_replace('<br>', "\n", $item->pidpysyname);
проще на уровне запроса
Код
$query->select( 'GROUP_CONCAT(up.name SEPARATOR \'\\n\')');
Еще раз спасибо
*

antarey

  • Захожу иногда
  • 162
  • 1 / 0
Re: Проблема с group_concat
« Ответ #28 : 23.11.2020, 16:42:02 »
Не понятно, зачем вы выводите это в textarea?
Посоветуйте какое поле использовать
*

NewUsers

  • Живу я здесь
  • 2021
  • 185 / 0
Re: Проблема с group_concat
« Ответ #29 : 23.11.2020, 16:43:51 »
Посоветуйте какое поле использовать
Самописное? (там не надо будет извращаться с GROUP_CONCAT)
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с выпадающим меню в Protostar

Автор wws

Ответов: 0
Просмотров: 77
Последний ответ 13.03.2021, 18:57:09
от wws
Проблема с регистрацией на сайте

Автор virtual-3

Ответов: 0
Просмотров: 85
Последний ответ 27.12.2020, 17:57:12
от virtual-3
Проблема с импортом доп. полей в Virtuemart3

Автор Damarkuzz

Ответов: 2
Просмотров: 140
Последний ответ 05.12.2020, 22:53:41
от Damarkuzz
Проблема с 404 страницей

Автор prog5

Ответов: 1
Просмотров: 115
Последний ответ 05.11.2020, 20:12:46
от Grigoriy82
Проблема с JQuery

Автор Lemonez

Ответов: 6
Просмотров: 236
Последний ответ 08.09.2020, 19:56:42
от gartes