Добавьте noRoots noLeafs onlyLeafs scopes
DrDeath72 opened this issue · 12 comments
Чтоб не дергать лишние когда не надо
Приведите пример использования.
Да банально, берем каталог товаров. С одним деревом не нужен Root ввиду его формальности для роста дерева. onlyLeaf нужны чтоб дернуть только конченые разделы в которые можно добавить товары, ну а noLeafs для полноты картины :)
С одним деревом не нужен Root
Для одного дерева есть специальный режим работы расширения.
onlyLeaf и noLeafs "для полноты картины"
Слишком специфичная задача, чтобы добавлять это в расширение.
Для одного дерева есть специальный режим работы расширения.
Любое дерево растет из рута с left = 1, вот он то как раз при выборках и не нужен, он "системный"
Слишком специфичная задача, чтобы добавлять это в расширение.
Да не вопрос, мне не сложно 2 строчки у себя дописать, если вам не нужны возможности нужные мне
вот он то как раз при выборках и не нужен
Его и так нет при выборках, к примеру при использовании метода descendants()
.
Зато есть при ancestors, да и просто при findAll order by left asc нафиг не нужен
Зато есть при ancestors
Всё верно, потому что он там должен быть. Если он не нужен, то это частная задача и должна решаться на уровне приложения.
да и просто при findAll order by left asc нафиг не нужен
При просто findAll() тем более с таким критерием несложно ещё дописать lft!=1, если вдруг корень не нужен.
Всё верно, потому что он там должен быть. Если он не нужен, то это частная задача и должна решаться на уровне приложения.
Если бы она решалась расширением было бы гораздо удобнее
При просто findAll() тем более с таким критерием несложно ещё дописать lft!=1, если вдруг корень не нужен.
Это все приходится делать потому что по другому нельзя. А руками да, все можно, только для того оно и расширение, чтобы руками меньше писать аналоги всяких Cat::model()->noRoot()->getTree()
и прочие $cat->isParent($cat2)
Дело в том, что расширение решает общие задачи: выбрать прямых потомков, выбрать всех потомков, выбрать путь до ноды и т.д. Если вам нужна выборка чего либо исключая что-либо пишите соответствующий критерий, потому что это уже специфика вашей задачи. Например, выбрать путь до ноды без корня:
$node->ancestors()->findAll('lft!=1');
И т.д. При желании в конкретной модели можно сделать withoutRoot() scope. Расширение не решает и не будет решать частных задач по причине их бесконечного множества. Общих задач всегда конечное количество.
P.S. Специфические задачи, которые вам кажутся типовыми другими пользователями как типовые могут не восприниматься.
Да не парьтесь, я уже привык что Yii кодеры неделю могут объяснять почему это никому не нужно, вместо пары строчек кода :)
Это вопрос не пары строчек кода, а вопрос баланса и идеологии разработки расширений.
Ну для меня специфические задачи это дерни мне детей с названием "Утюг". А задачи дерни мне детей/родителей без/только корни/родители это 100% задачи расширения.