Миша
$c = $modx->newQuery('modResource'); $c->innerJoin('modTemplateVarResource','modTemplateVarResource'); $c->where(array('modTemplateVarResource.value' => $productId, 'modTemplateVarResource.tmplvarid' => 8, 'modResource.class_key' => 'msProduct')); $c->prepare(); echo $c->toSQL(); die();
Yaroslav
modx.mysql.schema.xml (не за рабочим пк, соррян. Но алиас будет другим и с большой буквы по-любому. upd: TemplateVarResources)
Yaroslav
modx.mysql.schema.xml (не за рабочим пк, соррян. Но алиас будет другим и с большой буквы по-любому UPD: TemplateVarResources)
Sergey_K
Все есть в доке и вообще рой исходники :)
Sergey_K
Это резюме ) Просто там выдуманный псевдоним для джойна надо угадать
Sergey_K
Уже написал
Да, спасибо, вижу)
Yaroslav
https://itchief.ru/lessons/modx-revo/modx-xpdo-receiving-objects
Sergey_K
https://itchief.ru/lessons/modx-revo/modx-xpdo-receiving-objects
Чем больше читаю все это, тем меньше понимаю, зачем это. Есть же стандартные FK в sql. Настроить их и подхватывать автоматом вообще не проблема. Тогда ни схем не надо, ни гадать, как там называется алиас алиаса того алиаса... странно, короче.
Sergey_K
Вот это бы все и делать в V3...
Евгений
не помнишь как было? просто список или вложенный список?
Sergey_K
че за выдуманный?
У тебя есть человеческая таюлица
Sergey_K
На нее вешается класс модх с названием, которое не совпадает с именем таблицы
Sergey_K
А чтобы заджойнить эту таблицу с другой, нужно указать третью строку - название этой связи.
Миша
Евгений
не, не помню
а подумать?)
Sergey_K
Ну да. Говорят, так и надо :)
Миша
Ну да. Говорят, так и надо :)
чет раньше вроде прокатывало
Миша
или я ошибаюсь?
Sergey_K
или я ошибаюсь?
Я ХЗ, проще написать нормальный обычный джойн напрямую, чем использовать эту тряхомудию. К тому же памяти и ресурсов жрать будет сильно меньше
Евгений
не, не помню
бле, оно так и было, я кеш открыл
iWatchYouFromAfar
бле, оно так и было, я кеш открыл
Вася хреновый верстальщик
Sergey_K
да прсото странно
Ну как умели. Я потратил час и сделал на основной грид своей формы вьюху в БД. В итоге она выводится в 10 раз быстрее джойнов нативного пдо. Классы модх, думаю, будут еще чуть медленнее. При этом весь запрос это select * from orders_list where .... И получаешь и емейл юзера и всю нужную инфу с поиском по любому полю. Пойду артуру расскажу)
Sergey_K
Нет, это связь, прописанная в классе. Хардкод. Либо пиши джойн весь изначально.
Mihail
Привет всем! вопрос вставляю на сайт временную картинку) https://placeimg.com/170/130/tech и есть вывод 10 статей, и везде одна и таже фотка, можно ли как то сделать так чтобы под каждую из статей выдавалась разная фотка?
Anonymous
Anonymous
Вот уж эти зомби 😀
Yaroslav
Я ХЗ, проще написать нормальный обычный джойн напрямую, чем использовать эту тряхомудию. К тому же памяти и ресурсов жрать будет сильно меньше
про память и ресурсы - неверное утверждение. Экземпляр xPDOQuery не жрет память и ресурсы и создается в одном количестве на запрос
Sergey_K
Да, но вот только из него данные не получить. Жрет все то, что дальше
Yaroslav
как оказалось - в ларе приходится лазить и в базу и в миграции. тоже удовольствие)
Sergey_K
как оказалось - в ларе приходится лазить и в базу и в миграции. тоже удовольствие)
Если нормально прописать структуру базы, то все то, с чем тут ибутся в 95% случаев, пропадет. Про вашу базу комментировать не буду ибо не знаю, что там. Но тупые джойны как здесь это решает на 100%.
Yaroslav
А чтобы заджойнить эту таблицу с другой, нужно указать третью строку - название этой связи.
для того чтобы не париться с третьим аргументом связи как раз и указаны в композитах и агрегатах в схеме. но вообще это для работы через getOne, getMany, addOne, addMany
Yaroslav
Да, но вот только из него данные не получить. Жрет все то, что дальше
prepare, execute fetchAll - это коммбо (не экст) не жрет если где-то есть узкое место, можно использовать
Yaroslav
Да, но сделано костыльно. Уж простите.
это фундаментал xPDO как бы.
Евгений
ща непрограммист расскажет как правильно
Sergey_K
это фундаментал xPDO как бы.
Да не важно, я о подходе. И не понятно, с какой целью так сделано
Yaroslav
Таки об этом и речь :)
использовать ли коллекции для вывода 20 объектов или финт указанный выше какждый решает в зависисости от задачи
Yaroslav
Sergey_K
указание композитов и агрегатов как бы
Композиты и агрегаты вставляются параметрами, обертка для этого нужна минимальная
Sergey_K
указание композитов и агрегатов как бы
Но самое дикое в том, что это решение связей, по сути, дублирует функционал FK и работает кривее. Хотя бы потому, что для FK будет план запроса и попадание в статистику.
Yaroslav
А в чем универсальность тогда?
никто не говорит об универсальности - быстрый способ - это костыль, который вошел в массы из-за недостатков в производительности xPDO
Иван
Ребята, пусть я буду нудным. Но давайте без мата. Плиз
Yaroslav
Sergey_K
Плюс еще и целостность данных через него.
Sergey_K
в каком типе хранилища?
В любых реляционных БД )) Насколько помню. От сиквела мс до оракла
iWatchYouFromAfar
ребят
iWatchYouFromAfar
есть массив, как мне получать первый ключ массива автоматом?
Sergey_K
нет. это особенность типа хранилища
Прости, но это стандарт языка
iWatchYouFromAfar
$tree['1']['alias'] - вот там где 1
Yaroslav
В любых реляционных БД )) Насколько помню. От сиквела мс до оракла
я к тому что после ответа на то какой-тип хранилища будет вопрос - а какой тип хранилища поддерживается в модкс 2.х?
Sergey_K
Я не предлагал бы иначе
iWatchYouFromAfar
reset(array_keys())
спс, думаю этот вариант подойдет
Yaroslav
Не будет. Потому что это стандарт SQL
это мой вопрос и тип хранилища емнип - MyISAM. А как там обстоит с fk и так понятно. получается, что это просто особенность CMF
Sergey_K
это мой вопрос и тип хранилища емнип - MyISAM. А как там обстоит с fk и так понятно. получается, что это просто особенность CMF
Если ты про движок БД, то наплевать, пока он поддерживает SQL. А если он не поддерживает, то у тебя и селект будет "не факт".
Yaroslav
Обычно это называется "кривая реализация" )
я смотрел код и в 2008-9 гг я вряд ли бы сделал лучше)
Sergey_K
я смотрел код и в 2008-9 гг я вряд ли бы сделал лучше)
Ну мы не в 2009году. К тому же не понятно, зачем изобретать велосипед. Слой абстракции над БД есть в любых даже средних системах. От Аксапты (щас уже МС) до ОеБС. Можно было тупо скопировать модель и все.
Sergey_K
Это было все и в 2000 году... и не сильно изменилось, кстати.
Sergey_K
...идею TV же спиздили (предполагаю) из оракла
Sergey_K
FlexFields называется)
Yaroslav
Ну мы не в 2009году. К тому же не понятно, зачем изобретать велосипед. Слой абстракции над БД есть в любых даже средних системах. От Аксапты (щас уже МС) до ОеБС. Можно было тупо скопировать модель и все.
это уже из области на какой framework стоит уйти или релиз 4.0) и не думаю что эта тема относится к тематике канала. https://github.com/modxcms/xpdo/issues/118 - самая крутая штука xPDO испорчена багами, и никому подобные issue не интересны, поэтому мне неинтересны перспективы тоже на данный момент
Yaroslav
к слову, это один запрос к базе
Sergey_K
это уже из области на какой framework стоит уйти или релиз 4.0) и не думаю что эта тема относится к тематике канала. https://github.com/modxcms/xpdo/issues/118 - самая крутая штука xPDO испорчена багами, и никому подобные issue не интересны, поэтому мне неинтересны перспективы тоже на данный момент
Мы переходим к тому, о чем я говорил раньше. Нет видения, стратегии и целей. А потому ни у кого нет мотивации что-то пушить и глобально переделывать т.к. не ясно, кому вообще это нужно. К вопросу "не предлагай, а делай"
Sergey_K
к слову, это один запрос к базе
Ну это норм. План запроса посмотри, думаю основная жесть там. Можно базу подкрутить так, что даже простыня эта будет работать.