Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   RevoleR CMS: ищу идеи и критику (https://javascript.ru/forum/project/73650-revoler-cms-ishhu-idei-i-kritiku.html)

xShift 21.02.2019 14:07

DBX v.1.1.3 :: реализована поддержка INNER JOIN. ABQ простой:

Цитата:

$cFields = ['field_id', 'field_node_id', 'field_user_id', 'field_user_name', 'field_content', 'field_time', 'field_published'];
$nFields = ['field_id', 'field_title', 'field_content', 'field_description', 'field_user', 'field_time', 'field_route', 'field_category', 'field_published'];

$nFields['field_id']['criterion_field'] = 'field_id';
$nFields['field_id']['linked_field'] = 'field_node_id';

$ncFields = [
$cFields,
$nFields
];

unset( $dbx::$result['result'] ); // clean previous result


$dbx::query('j', ['revolver__nodes', 'revolver__comments'], $ncFields);
выдаст запрос:

Цитата:

SELECT `revolver__nodes`.*, `revolver__comments`.* FROM `revolver__nodes` INNER JOIN `revolver__comments` ON(`revolver__nodes`.field_id=`revolver__comments` .field_node_id);

JOIN может быть хоть пятерным. В скором будущем после создания кэша для j и xs запросов будет скомпилировано ядро RevolveR CMS, чтобы систему не ковыряли всякие некомпетентные разработчики типа хабров.

Nexus 21.02.2019 14:28

Цитата:

Сообщение от xShift
ABQ простой

Для вас.

Зачем вам в коде список полей (переменные $cFields, $nFields), если на выхлопе запрос, который вытянет из базы все поля таблиц?
Алиасы полям проставить можно?

Очищение предыдущей выборки из базы перед созданием нового запроса выглядит феерично :)
Что произойдет, если этого не сделать?

upd.
Цитата:

Сообщение от xShift
будет скомпилировано ядро RevolveR CMS, чтобы систему не ковыряли всякие некомпетентные разработчики

Создайте приватный репозиторий и проблема будет решена без необходимости компиляции php.

xShift 21.02.2019 19:43

Цитата:

Сообщение от Nexus (Сообщение 503908)
Для вас.

Зачем вам в коде список полей (переменные $cFields, $nFields), если на выхлопе запрос, который вытянет из базы все поля таблиц?
Алиасы полям проставить можно?

Очищение предыдущей выборки из базы перед созданием нового запроса выглядит феерично :)
Что произойдет, если этого не сделать?

upd.

Создайте приватный репозиторий и проблема будет решена без необходимости компиляции php.


Поля формируют ON, если вы не заметили.




Очистка запроса нужна только для того, чтобы результаты предыдущего запроса не схлопывались. Можно выполнить несколько разных select и они соединятся(не то что для удобства - просто так накожено). В RevolveR CMS это делается автоматически если используется хелпер GetData. Он автоматически проверяет перед выполнением запроса к DBX, что переменая $dbx::$result['result]' пуста(очищает ее). За замечание спасибо, возможно я это исправлю каким либо образом.

> Алиасы полям проставить можно?

Я над этим пока не работал. API будет по гибче - я еще LIMIT добавлю и ORDER BY.

В будущем, кстати, я портирую DBX на NODE JS.

Nexus 21.02.2019 19:57

Цитата:

Сообщение от xShift
Поля формируют ON, если вы не заметили.

Я про первые 2 строчки писал.
Цитата:

$cFields = ['field_id', 'field_node_id', 'field_user_id', 'field_user_name', 'field_content', 'field_time', 'field_published'];
$nFields = ['field_id', 'field_title', 'field_content', 'field_description', 'field_user', 'field_time', 'field_route', 'field_category', 'field_published'];

xShift 21.02.2019 22:22

Цитата:

Сообщение от Nexus (Сообщение 503917)
Я про первые 2 строчки писал.


Так вот просто для наглядности. Они в полном виде выглядят вот так:

$STRUCT_NODES = [
	'field_id' => [
		'type'   => 'num', // int
		'auto'   => true,  // auto increment
		'length' => 255,
		'value'  => 0
	],
	'field_title' => [
		'type'   => 'text', // varchar
		'length' => 50,
		'fill'   => true
	],
	'field_content' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_description' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_user' => [
		'type'   => 'text',
		'length' => 50,
		'fill'	 => true
	],
	'field_time' => [
		'type'   => 'text',
		'length' => 50,
		'fill'	 => true
	],
	'field_route' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_category' => [
		'type'   => 'num',
		'length' => 100,
		'fill'	 => true
	],
	'field_published' => [
		'type'   => 'num',
		'length' => 1,
		'fill'   => false
	]
];

$STRUCT_COMMENTS = [
	'field_id' => [
		'type'   => 'num', // int
		'auto'   => true,  // auto increment
		'length' => 255,
		'value'  => 0
	],
	'field_node_id' => [
		'type'   => 'num',
		'length' => 50,
		'fill'	 => true
	],
	'field_user_id' => [
		'type'   => 'num',
		'length' => 50,
		'fill'	 => true
	],
	'field_user_name' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_content' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_time' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_published' => [
		'type' 	 => 'num',
		'length' => 1,
		'fill'	 => false
	]
];


Это дефайнится один раз и потом я просто эти же структуры и использую. Правильно, достаточно просто поля field_id[criterion_fileld&&linked_field], но я использую JOIN не однажды и мне для копипасты удобнее прописать сразу все fields, чтобы в структуры постоянно и в базу не лезти.

xShift 22.02.2019 12:05

Nexus, напиши пример SQL запроса с алиасами. Я просто не знаю, что тебе хочется.

Nexus 22.02.2019 12:31

SELECT COUNT(*) as total FROM table_name WHERE condition=1

SELECT t.*,r.some_field as related_some_field
FROM table_name as t
LEFT JOIN related_table as r ON (r.table_id=t.id)
WHERE t.condition=1

xShift 22.02.2019 18:46

> SELECT COUNT(*) as total FROM table_name WHERE condition=1

Вот тут AS зачем?

>

SELECT t.*,r.some_field as related_some_field
FROM table_name as t
LEFT JOIN related_table as r ON (r.table_id=t.id)
WHERE t.condition=1

Вот здесь тоже зачем? Ты этих задротов начитался? То же самое я могу сделать с префиксами на DBX и добавить тебе возможность WHERE. AS сделали гондоны. Тебя, кстати, в AMD взяли ;)

p.s.: сейчас разрабатываем расширение для PHP под BD MySQL на ABQ. Если что появится через годик. Потом я на NODE.JS ухожу разрабатывать. Она молодая, дырявая и переполненная говна(убираем говнопакетчиков в пользу нативного функционала), но может в будущем станет лучше.

Nexus 23.02.2019 12:09

Цитата:

Сообщение от xShift
Вот тут AS зачем?

Чтобы в результате выборки, значение счетчика было в поле "total", очевидно же.

Цитата:

Сообщение от xShift
AS сделали гондоны.

Цитата:

Сообщение от xShift
бы систему не ковыряли всякие некомпетентные разработчики типа хабров.

У вас синдром Д'артаньяна.

Цитата:

Сообщение от xShift
Если что появится через годик.

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

Цитата:

Сообщение от xShift
Она молодая, дырявая и переполненная говна

Стоит ли тогда еще и ваше говно туда добавлять?

Выпиливаюсь из топика, ибо начнется срач.

xShift 24.02.2019 12:15

Nexus оказался пидарасом. Пригласили в разработчики, включили в прослушку, через 5 часов начал ныть что его не разрабатывают. Это ни чего что меня чтобы разрабатывать объясняют 5 лет примерно и подбирают таких людей с которыми мне нормально. Потом глупый нексус решил на подставить ментами - это сегодня выяснилось. Хотел скрысить прослушку и включиться к ментам чтобы жаловаться. Поржали.

Вот так и делай людям добро. Маленькие людишки всегда страдали повышенным эго, но не до такой же степени сукой быть.

Вон из разработчиков.


Часовой пояс GMT +3, время: 12:50.