Новости Joomla

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

ZloiOrk

  • Новичок
  • 7
  • 0 / 0
JTable - что это?
« : 29.04.2013, 19:57:35 »
Учусь писать компонент, после прочтения документации(часть 4) возникли вопросы:

1. В чем принципиальное отличие JTable от JModel? В обоих классах мы берем данные из БД и обрабатываем их, так, как нам нужно.
2. Чем лучше всего заниматься в JTable? В примере мы переопределяли методы. Я могу написать в JTable какието свои новые методы и пользоваться ими?
3. Если во 2 да, то почему бы все не писать или в JTable, или в JModel(если опустить концепцию "разделения кода на несколько файлов для простоты")? Помимо того, что классы расположены в разных файлах, должно быть какое то и логическое разделение?
4. Если у меня данные должны выбираться из нескольких таблиц, как мне поступить? Создать еще один класс JModel (table2, например) или разбираться с этим уже в модели?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: JTable - что это?
« Ответ #1 : 29.04.2013, 20:39:34 »
почему бы все не писать или в JTable, или в JModel
JModel и JTable своего компонента обычно не создаём с нуля а наследуем от существующих классов в Joomla чтоб пользоваться их методами, поэтому есть смысл придерживаться такого разделения кода.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #2 : 29.04.2013, 20:48:44 »
JModel и JTable слишком разные вещи и разные у них назначения!
JModel это класс для организации модели в вашем MVC компоненте!
JTable это класс для работы с таблицей который реализует шаблон проектирования Active Record
можете посмотреть в моей статье про JTable: http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/klass-jtable-v-joomla
*

ZloiOrk

  • Новичок
  • 7
  • 0 / 0
Re: JTable - что это?
« Ответ #3 : 30.04.2013, 00:17:00 »
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/klass-jtable-v-joomla
уже прочитал много статей с Вашего сайта :) Я понять не могу, зачем мы использовали этот класс в примере с HelloWorld. Без него же и так в модели можно таскать данные из бд. А тут мы целый класс определяем для всего одной таблицы.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #4 : 30.04.2013, 00:35:51 »
уже прочитал много статей с Вашего сайта :) Я понять не могу, зачем мы использовали этот класс в примере с HelloWorld. Без него же и так в модели можно таскать данные из бд. А тут мы целый класс определяем для всего одной таблицы.
вы очевидно ещё не очень хорошо знаете ООП) просто получается что мы можем работать с одиночной записью в табличке как с объектом!
это очень удобно!
в этом классе мы можем сделать что бы какие то поля заполнялись по умолчанию, либо формировались!
например Alias и разделение introtext + fulltext!
+ автоматически записует в таблицу #__assest данные!
вы также можете написать свою проверку данных для таблицы!

например банальный пример вставить запись и получить id новой записи:
Код: php
$table = $this->getTable('table_name');
$table->bind( array ('title'=>'text', 'created'=>date('Y-m-d H:i:s'), 'text'=>'lala' ) );
$table->strore();
после выполнения метода store() в $table будет помещены данные записи! в том числе и в $table->id будет id записи!

или как я писал пример:
Код: php
$table = $this->getTable('table_name');
$table->hit(10);
увеличит значение записи с id=10 в поле hit табличке table_name на единицу )

это же проще чем написать условие ) и быстрее
*

ZloiOrk

  • Новичок
  • 7
  • 0 / 0
Re: JTable - что это?
« Ответ #5 : 30.04.2013, 01:12:18 »
вы очевидно ещё не очень хорошо знаете ООП)
тут в точку. никто нам не хочет ничего объяснять - учите как хотите, главное лабы вовремя сдавайте :) Я понял, чтобы использовать объект, нужно создавать экзепляр объекта.

просто получается что мы можем работать с одиночной записью в табличке как с объектом!

Т.е. вместо этого кода, где мы каждый раз создаем запрос к БД
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('id, greeting, ordering');
$query->from('#__helloworld');

мы используем методы, которые уже есть + те которые мы написали сами/переопределили. И можем без запроса получать, например, все строки, или строку по ID, или весь столбец записать в массив, если создать такой метод.

добавил функцию(в tables\hellowrold.php):
Код: php
public function seeIt($a=1)
{
return $a;
}
т.е. простая функция - возвращает 1, если не задавать никаких аргументов.
вызываю ее в модели (models\hellowrlds.php):
Код: php
$table = $this->getTable('helloworld');		
$table->seeIt();
return $table;

и не работает. в виде прописал:

Код: php
$a = HelloWorldModelHelloWorlds::seeIt();
var_dump($a);
для проверки. если return 1; поставить в модели и закомментировать мой код - то все работает. Что я не так делаю?
p.s.вопрос на перед. Я как понимаю, если все правильно сделать, то в админ панели кнопки создать/сохранить/удалить/изменить будут автоматически(по умолчанию) работать с таблицей?
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
Re: JTable - что это?
« Ответ #6 : 30.04.2013, 01:30:22 »
А что должно работать? У вас в модели функция seeIt() есть?
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #7 : 30.04.2013, 01:32:29 »
Вам бы не мешало чуть чуть подтянуть конечно ООП! вы пытаетесь бегать не научившись ходить )

Вы то вызываете, но дальше с этим то ничего не делаете ) у вас просто возврат значения из метода seeIt и все!
его бы вывести для приличия )
Код: php
$table = $this->getTable('helloworld');		
echo $table->seeIt();
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #8 : 30.04.2013, 01:40:45 »
Т.е. вместо этого кода, где мы каждый раз создаем запрос к БД
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('id, greeting, ordering');
$query->from('#__helloworld');

мы используем методы, которые уже есть + те которые мы написали сами/переопределили. И можем без запроса получать, например, все строки, или строку по ID, или весь столбец записать в массив, если создать такой метод.
на самом деле в классе JTable тоже создается запрос (который вы не видите) и делает то что вы написали ) только в запросе вы можете написать любые условия для получения строки. а в JTable можно выбрать только по одному полю строку поле по которому идет выборка определяют в конструкторе этого класса!
Код: php
function __construct( &$db )	{
parent::__construct( '#__content', 'id', $db ); // вот тут второй парамерт
}
и при выполнении
$table = $this->getTable('helloworld');
$table->load(10); //загружаем поле с id=10
просто выполнится запрос 'SELECT * FROM #__content WHERE id=10'
а дальше по полям класса JTable которые один в одни совпадают с полями таблички __content занесутся данные, с которыми вы сможете работать так:
echo $table->introtext или echo  $table->created , вообщем любое название поля из таблички __content

*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #9 : 01.06.2013, 01:26:26 »
а скажите пожалуйста вот что. сейчас все больше встречается написание запросов в виде
Код
$query = $db->getQuery(true);
$query->select('id, greeting, ordering');
$query->from('#__helloworld');
в чем принципиальная разница между такой записью и так сказать старым вариантом? этот работает быстрее? или что?

и второй вопрос: как используя такой принцип выполнить например ALTER TABLE ?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #10 : 01.06.2013, 02:07:57 »
а скажите пожалуйста вот что. сейчас все больше встречается написание запросов в виде
Код
$query = $db->getQuery(true);
$query->select('id, greeting, ordering');
$query->from('#__helloworld');
в чем принципиальная разница между такой записью и так сказать старым вариантом? этот работает быстрее? или что?

и второй вопрос: как используя такой принцип выполнить например ALTER TABLE ?
эта запись и вернет запрос в старом варианте! тоесть если вы напишите echo $query то увидите всего лишь 'SELECT id, greeting, ordering FROM #__helloworld'
естественно это будет работать медленнее чем если вы напишите простой запрос!
почему его используют? потому что конструктор запросов это очень удобно!
особенно если собирать сложные запросы!
+ это слой абстракции который может упростить переход на другие базы данных. Правда не знаю на сколько это в Joomla реализовано )
*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #11 : 01.06.2013, 09:21:51 »
понятно, спасибо. т.е. нет смысла вообще переходить на эту форму записи. мало того, что получается работает она не быстрее, а медленнее, так еще и удобство как вы говорите очень спорно. чем например эта запись

Код
$query = $db->getQuery(true);
$query->select('id, greeting, ordering');
$query->from('#__helloworld');

удобнее

Код
$db->setQuery('SELECT id, greeting, ordering FROM #__helloworld')

? кода больше, путаницы больше, произвольный запрос (например, ALTER TABLE) выполнить нельзя. в общем, я для себя например не нашел ни одного плюса.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #12 : 01.06.2013, 10:29:14 »
понятно, спасибо. т.е. нет смысла вообще переходить на эту форму записи. мало того, что получается работает она не быстрее, а медленнее, так еще и удобство как вы говорите очень спорно. чем например эта запись
ну эта медленность не на столько критична!
и вы написали очень простой пример что бы судить о пользе! и переходить на такую форму записи стоит!
давайте немножко выйдем за рамки: например есть запрос с кучей фильтров(например выбор по автору, выбор по состоянию публикации, поиск и т.д.), сортировка по полям, а если надо внезапно при каком либо условии присоединить таблицу, представляете как ваш запрос будет выглядеть и читаться?
*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #13 : 01.06.2013, 11:27:17 »
представляю. давайте посмотрим... вот например запрос с выборкой из 2-х таблиц с условиями разными в новом стиле

Код
$query->select("t1.*, t2.*");
$query->from("#__t1 AS t1");
$query->innerJoin("#__t2 AS t2 ON t1.col1 = t2.col1");
$query->where("t1.col1 = XXX");
$query->where("t1.col2 = YYY");

а вот тоже самое в старой

Код
$query = 'SELECT t1.*, t2.* '
$query .= 'FROM #__t1 AS t1 ';
$query .= 'INNER JOIN #__t2 AS t2 ON t1.col1 = t2.col1 ';
$query .= 'WHERE t1.col1 = XXX ';
$query .= 'AND t1.col2 = YYY ';

и в чем особо разница в понимании? но! самый главный вопрос для меня, чтобы определится в необходимости использования/не использования. как мне выполнить запрос, выходящий за возможности JDatabaseQuery, используя конструктор? все тот же ALTER TABLE например. никак, правильно же? и, соотвественно, если мне нужны такие запросы, то использовать конструктор я не могу. и будет мешанина в коде, где то конструктор, где то нет
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #14 : 01.06.2013, 12:15:17 »
представляю. давайте посмотрим...
в том то дело что вы не представляете ) те что вы привели запросы уж очень примитивны что бы понять плюсы и минусы, запрос может растянуться на несколько десятков строк, я уже молчу что возможно что несколько методов будут формировать запрос! напишите класс в котором вы из нескольких методов будете формировать один запрос в таком виде, и посмотрим что после этого скажете ))
« Последнее редактирование: 01.06.2013, 12:19:55 от Istaan »
*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #15 : 01.06.2013, 12:44:31 »
давайте чтобы не из пустого в порожнее :) можете привести пример, когда такое надо? запрос хотя бы из 20-строк, который формируется как вы говорите, из разных методов, и на котором будут видны плюсы и минусы. ума не приложу, для чего такое может понадобится. о чем речь? о вложенных запросах? так за это по рукам надо, а не гордится. о выборке более чем из трех таблиц? так по тем же рукам, за идиотскую организцию таблиц. в общем, если можете и если не лень - запрос пожалуйста, на котором будет четко видна положительная сторона нового способа. плюс я не услышал все еще ни слова про ограничения JDatabaseQuery :) так что извините, пока не обосновано
Цитировать
в том то дело что вы не представляете
:)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #16 : 01.06.2013, 12:51:22 »
банальный пример импорт данных из XML в каталог с древовидной структурой, без рекурсии вы не обойдетесь, а формировать 100500 запросов не вариант)
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: JTable - что это?
« Ответ #17 : 01.06.2013, 13:16:09 »
Да пишите как удобней. Поисковый GET запрос http://site.ru/?search=model&col1=aaaa&col2=&col3=222..лень писать..&col15=qqqq&...col20=
Одна таблица 20 полей. Обрабатываем в модели с использованием $query->where("t1.col1 = XXX"); и без. Смотрим разницу и делаем выводы. Каждый свои.  ;D
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JTable - что это?
« Ответ #18 : 01.06.2013, 14:15:45 »
К сожалению использовать "новый" подход, то есть формировать sql-запрос загоняя его фрагменты в JDatabaseQueryElement, можно как раз только в случае примитивных sql-запросов.

Банальный пример - where

Цитировать
    *
    * @param   mixed   $conditions  A string or array of where conditions.
    * @param   string  $glue        The glue by which to join the conditions. Defaults to AND.
    *                               Note that the glue is set on first use and cannot be changed.

   public function where($conditions, $glue = 'AND')
   {

То бишь мы не сформируем сложное условие где будет и AND и OR - для объединения берётся только первый оператор.
*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #19 : 01.06.2013, 14:21:15 »
ясно. все понятно. как вы правильно заметили, каждому свое :) для себя не нашел ни одной причины в необходимости перехода на стиль $query->where("t1.col1 = XXX"). пока только минусы:

1. Самое главный минус - ограниченные возможности.
2. Так себе минус, которым можно пренебречь, но все таки - медленее.
3. И вообще не минус - вопрос удобства. Просто дело привычки. Кому то удобнее, кому то нет. Но даже если этот пункт считать плюсом - то первые 2 перекрывают его полезность полностью.

банальный импорт как вы говорите отлично писался и без использования стиля $query->where.. никакой путаницы, никаких неудобств. просто как я уже сказал - пункт 3 - дело привычки.

итого извините, но фраза
Цитировать
переходить на такую форму записи стоит!
звучит мягко говоря чересчур громко

на сим, если аргументы с вашей стороны исчерпаны, то разрешите откланяться. всем спасибо за конструктивный диалог

PS

Цитировать
То бишь мы не сформируем сложное условие где будет и AND и OR - для объединения берётся только первый оператор.

воот!  я ж о чем и говорю. очень ограничено.
« Последнее редактирование: 01.06.2013, 14:31:26 от kaze.mir »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #20 : 01.06.2013, 15:13:02 »
пока только минусы:
1. Самое главный минус - ограниченные возможности.
2. Так себе минус, которым можно пренебречь, но все таки - медленее.
3. И вообще не минус - вопрос удобства. Просто дело привычки. Кому то удобнее, кому то нет. Но даже если этот пункт считать плюсом - то первые 2 перекрывают его полезность полностью.
1. какие именно ограниченные возможности?
2. ну если вы сильно гоняетесь за скоростями то может не стоит смотреть в сторону CMS и PHP вообще?)
3. с помощью конструктора запросов удобнее составлять запросы ) их проще читать и отследить что где и когда! и ошибиться сложнее!


банальный импорт как вы говорите отлично писался и без использования стиля $query->where.. никакой путаницы, никаких неудобств. просто как я уже сказал - пункт 3 - дело привычки.
итого извините, но фразазвучит мягко говоря чересчур громко
покажите пожалуйста примеры кодов вашего банального импорта (больше 200 тысяч записей в XML файле) в каталог с древовидной структурой...
тем не менее я вам уже предлагал сделать класс в котором из разных методов вы вручную создадите запрос!
и тем более вас никто убеждать не собирается использовать конструктор запросов, но думаю вам и CMS тогда стоит сменить, ибо в Joomla в везде натыканы зыпросы которые формируются с помощью конструктора, если недайбог придется дорабатывать сторонний компонент вы можете и повиснуть )
« Последнее редактирование: 01.06.2013, 15:19:27 от Istaan »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #21 : 01.06.2013, 15:14:13 »
То бишь мы не сформируем сложное условие где будет и AND и OR - для объединения берётся только первый оператор.
$query->where('(published=1 OR published=2) AND id IN(1,2,3,4,5)');
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JTable - что это?
« Ответ #22 : 01.06.2013, 15:19:17 »
$query->where('(published=1 OR published=2) AND id IN(1,2,3,4,5)');

Да это понятно, хотя к сожалению это уже комбинирование "старого" и "нового" подходов, а не "новый" подход в чистом виде.

Вот когда методы JDatabaseQuery более-менее будут соответствовать потребностям - можно будет ими пользоваться в полной мере.

Пример:

есть $query->insert() и $query->update()

А мне вот нужен весьма удобный REPLACE, которого нет там.

В общем - холивар очередной, в зависимости от ситуации приходится делать по-разному и спорить тут не о чем.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #23 : 01.06.2013, 15:31:43 »
Вот когда методы JDatabaseQuery более-менее будут соответствовать потребностям - можно будет ими пользоваться в полной мере.
Как то Joomla работает, а подход оказывается не соответствует потребностям )))

А мне вот нужен весьма удобный REPLACE, которого нет там.
а зачем Replace что то не пойму? что он будет заменять? и для UPDATE проще юзать JTable!


да вот солидарен что не стоит доказывать, я не думаю что он пришел сюда что бы ему объяснили чем такой подход лучше )!
JTable тоже не стоит использовать  ) он ещё медленнее и лишний запрос, как и ООП в PHP которое тот ещё тормоз ) так что и MVC лучше не трогать )))
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JTable - что это?
« Ответ #24 : 01.06.2013, 15:35:11 »
а зачем Replace что то не пойму? что он будет заменять? и для UPDATE проще юзать JTable!

Ну разумеется.
Вместо того чтобы один раз сформировать запрос REPLACE лучше конечно делать как в ядре J - сначала сформировать запрос SELECT, а потом по условию - если найдено, то UPDATE, а если не найдено - то INSERT ;)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #25 : 01.06.2013, 15:47:22 »
Ну разумеется.
Вместо того чтобы один раз сформировать запрос REPLACE лучше конечно делать как в ядре J - сначала сформировать запрос SELECT, а потом по условию - если найдено, то UPDATE, а если не найдено - то INSERT ;)
хм.. а примеры где вы это использовали можно? я вот не помню что бы мне нужно было бы тупо замещать данные, обычно это выборка->манипуляция с данными->сохранение! но полная замена одной записи на другую.. даже чет не могу представить где такое может понадобится!
(ну я же говорил не стоит использовать JTable, MVC, ООП в Joomla и вообще в PHP, сменить CMS и язык)
« Последнее редактирование: 01.06.2013, 16:08:11 от Istaan »
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JTable - что это?
« Ответ #26 : 01.06.2013, 16:14:17 »
хм.. а примеры где вы это использовали можно?

Да взять тот же импорт данных в базу c синхронизацией по уникальному ключу.
Вместо того чтобы сначала через запрос SELECT выяснять есть ли запись в базе, чтобы решить что использовать - INSERT или UPDATE, можно использовать один запрос REPLACE - тогда в случае наличия записи она будет обновлена, в случае отсутствия - создана.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #27 : 01.06.2013, 16:28:03 »
Да взять тот же импорт данных в базу c синхронизацией по уникальному ключу.
Вместо того чтобы сначала через запрос SELECT выяснять есть ли запись в базе, чтобы решить что использовать - INSERT или UPDATE, можно использовать один запрос REPLACE - тогда в случае наличия записи она будет обновлена, в случае отсутствия - создана.
ну это очень маленький пример для того что бы не написать вручную запрос с REPLACE! и редкий!
да и когда у меня подобное было все равно надо было делать выборку, проверять кое какие значения полей и в зависимости от них уже выполнять определенные действия и апдейтить, так что не помог бы мне он... хотя для импорта на 200к товаров я и сам не использовал ни JTable ни JDatabaseQuery ))
*

kaze.mir

  • Захожу иногда
  • 62
  • 7 / 0
Re: JTable - что это?
« Ответ #28 : 01.06.2013, 17:00:54 »
Цитировать
я не думаю что он пришел сюда что бы ему объяснили чем такой подход лучше
а как по вашему, зачем пришел? похоливарить? тему апнуть? пришел именно потому, что не мог понять, можно ли (а главное, нужно ли) все таки полностью отказаться от привычного способа. получается, что нет.

Istaan, диалог перестает быть конструктивным. вы заставляете меня повторяться. хорошо, еще раз.

Код
1. какие именно ограниченные возможности?

ALTER TABLE. REPLACE. Добавить таблицу в конце концов при установке компонента.

Цитировать
2. ну если вы сильно гоняетесь за скоростями то может не стоит смотреть в сторону CMS и PHP вообще?)

не стоит преувеличивать и утрировать. потеря скорости должна быть оправдана. тем более как я уже сказал - этим можно пренебречь.

Цитировать
3. с помощью конструктора запросов удобнее составлять запросы ) их проще читать и отследить что где и когда! и ошибиться сложнее!

опять таки, как я уже сказал, дело вкуса и привычки. но все удобство сводится к нулю из-за п.1

Цитировать
сделать класс в котором из разных методов вы вручную создадите запрос

расширить JDatabaseQueryElement чтоли? или вы о чем? так нах зачем мне такой класс, который еще и расширять надо, вместо того чтобы писать запросы привычно?

Цитировать
вас никто убеждать не собирается использовать конструктор запросов, но думаю вам и CMS тогда стоит сменить, ибо в Joomla в везде натыканы зыпросы которые формируются с помощью конструктора, если недайбог придется дорабатывать сторонний компонент вы можете и повиснуть )

мне показалось, или вы это так легонько камень бросили? причем тут разбор чужих расширений? каждый пишет как ему удобно. кому то удобнее с конструктором - да пожалуйста. надо будет разобраться - разберусь. я спрашивал исключительно в разрезе своих. да/нет. вышло, что нет. поскольку, как сказал SDKiller, методы JDatabaseQuery далеко не полностью соотвествуют всем потребностям. Соотвественно, полностью отказаться от "старой" записи не получится. А комбинировать не вижу смысла. Ибо создаст еще большую путаницу. Это в принципе как раз то, для чего я и пришел - понять до конца - можно (нужно) / нельзя (не нужно).
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: JTable - что это?
« Ответ #29 : 01.06.2013, 17:30:25 »
ALTER TABLE. REPLACE. Добавить таблицу в конце концов при установке компонента.
расскажите как часто в ствоих компонентах вы пишете ALTER TABLE или REPLACE? я за 5 лет практики не использовал ниразу REPLACE, а ALTER TABLE не юзал вне phpMyAdmin вообще!
и при установке компонента/обновлении/удалении идет немножко другой функционал для всего этого!

не стоит преувеличивать и утрировать. потеря скорости должна быть оправдана. тем более как я уже сказал - этим можно пренебречь.
ну это вы придрались к скорости!

опять таки, как я уже сказал, дело вкуса и привычки. но все удобство сводится к нулю из-за п.1
я не понимаю какое может быть удобство в стандартном подходе! я вот недавно правил один сайт и там запрос был в стиле:  SELECT ID, TITLE, ALIAS, ... , METDESC FROM TABLE1 LEFT JOIN TABLE ON TABLE2.ID=TABLE1.CATID WHERE ID=10..  вообщем огромный запрос, с кучей джойнов и т.д.
и все в одну строку, да я чуть сума не сошел пока смог разобрать что это за хрень! да даже глаза расплываются и невозможно понять что это и зачем оно, и визуально хрен поймешь где что и зачем!!

расширить JDatabaseQueryElement чтоли? или вы о чем? так нах зачем мне такой класс, который еще и расширять надо, вместо того чтобы писать запросы привычно?
Тоесть вы и JTable и MVC не будете юзать? они же тупят ещё больше! нах они вам надо?)

мне показалось, или вы это так легонько камень бросили? причем тут разбор чужих расширений? каждый пишет как ему удобно. кому то удобнее с конструктором - да пожалуйста. надо будет разобраться - разберусь. я спрашивал исключительно в разрезе своих. да/нет. вышло, что нет. поскольку, как сказал SDKiller, методы JDatabaseQuery далеко не полностью соотвествуют всем потребностям. Соотвественно, полностью отказаться от "старой" записи не получится. А комбинировать не вижу смысла. Ибо создаст еще большую путаницу. Это в принципе как раз то, для чего я и пришел - понять до конца - можно (нужно) / нельзя (не нужно).
если у вас сайт только ваш, никто никогда его дорабатывать не будет, и расширение у вас одиночное, и не будете их распространять то пишите хоть на функциональном программировании, а выше я уже привел маленький кусочек запроса с которыми я сталкивался дорабатывая сайт за другими программистами! и как я сказал выше почему то для целой CMS хватает возможностей JDatabaseQuery, а вы говорите что их недостаточно! как же Joomla работает? как же другие расширения работают?

p.s. я никого не призываю и не заставляю юзать конструктор запросов! удобнее вам просто в строку писать? пишите в строку! зачем вообще тогда морочить голову! но работая над многими сайтами, и видя качество того как многие программисты пишут простые запросы сразу понятны все плюсы этого подхода, и удобство читаемости ООП подхода в разы выше (по крайней мере для меня)!
« Последнее редактирование: 01.06.2013, 18:07:33 от Istaan »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изменения в работе JTable

Автор vova.olar

Ответов: 8
Просмотров: 2753
Последний ответ 28.01.2011, 12:39:44
от smart