我的模型类是:
class Category < ActiveRecord::Base
acts_as_nested_set
has_many :children, :foreign_key => "parent_id", :class_name => 'Category'
belongs_to :parent, :foreign_key => "parent_id", :class_name => 'Category'
def to_param
slug
end
end
Run Code Online (Sandbox Code Playgroud)
是否有可能像这样的递归路线:
/root_category_slug/child_category_slug/child_of_a_child_category_slug......等等
感谢您的任何帮助 :)
我决定关注http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html
所以现在我正在寻找代码的一些帮助.
我正在使用他们的数据进行测试,因此,我将树可视化为:
array('value' => 'Richard Shakespeare',
array('value' => 'Henry',
array('value' => 'Joan'),
array('value' => 'Margaret'),
array('value' => 'William',
array('value' => 'Susana',
array('value' => 'Elizabeth Hall',
array('value' => 'John Bernard'))),
array('value' => 'Hamnet'),
array('value' => 'Judith',
array('value' => 'Shakespeare Quiney'),
array('value' => 'Richard Quiney'),
array('value' => 'Thomas Quiney'))),
array('value' => 'Gilbert'),
array('value' => 'Joan',
array('value' => 'William Hart'),
array('value' => 'Mary Hart'),
array('value' => 'Thomas Hart'),
array('value' => 'Micheal Hart')),
array('value' => 'Anne'),
array('value' => 'Richard'),
array('value' => 'Edmond')), …Run Code Online (Sandbox Code Playgroud) 我有两张桌子:
地点:
CREATE TABLE `localities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`type` varchar(30) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`lft` int(11) DEFAULT NULL,
`rgt` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_localities_on_parent_id_and_type` (`parent_id`,`type`),
KEY `index_localities_on_name` (`name`),
KEY `index_localities_on_lft_and_rgt` (`lft`,`rgt`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
locatings:
CREATE TABLE `locatings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`localizable_id` int(11) DEFAULT NULL,
`localizable_type` varchar(255) DEFAULT NULL,
`locality_id` int(11) NOT NULL,
`category` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_locatings_on_locality_id` (`locality_id`),
KEY `localizable_and_category_index` (`localizable_type`,`localizable_id`,`category`), …Run Code Online (Sandbox Code Playgroud) 我有一个MySQL查询,我认为它可以很好地检索每个节点的所有祖先,从顶部节点开始,直到它的直接节点.但是当我在嵌套集中添加第5级时,它就破了.
下面是示例表,查询和SQL Fiddles:
四级嵌套集:
CREATE TABLE Tree
(title varchar(20) PRIMARY KEY,
`tree` int,
`left` int,
`right` int);
INSERT Tree
VALUES
("Food", 1, 1, 18),
('Fruit', 1, 2, 11),
('Red', 1, 3, 6),
('Cherry', 1, 4, 5),
('Yellow', 1, 7, 10),
('Banana', 1, 8, 9),
('Meat', 1, 12, 17),
('Beef', 1, 13, 14),
('Pork', 1, 15, 16);
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT t0.title node
,(SELECT GROUP_CONCAT(t2.title)
FROM Tree t2
WHERE t2.left<t0.left AND t2.right>t0.right
ORDER BY t2.left) ancestors
FROM Tree t0
GROUP BY t0.title;
Run Code Online (Sandbox Code Playgroud)
节点的返回结果 …
我正在寻找一个带有所有需要函数的PHP(带有MYSQL)嵌套集类.例如:
createLeftNode,createRightNode,createRootNode,createSubNode,deleteNode和moveTree.不仅有1个左边,1个右边,1个向上和1个向下,还有一个树的一部分在另一棵树中.
谢谢!
我一直在实现一些很好的交互式界面,可以在m rails应用程序中为使用的模型对列表进行排序acts_as_list.我有一个sort函数被调用,并使用sortable_element script.aculo.us函数设置每个拖放后的每个记录的位置.
这是在拖放完成后处理排序的控制器操作的示例:
def sort
params[:documents].each_with_index do |id, index|
Document.update_all(['position=?', index+1], ['id=?', id])
end
end
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用嵌套set(acts_as_nested_set)的模型做同样的事情.接口交互类型的一个示例:http://script.aculo.us/playground/test/functional/sortable_tree_test.html
我停留在如何编写控制器动作以处理拖放完成时的排序.
我已经将:tree => true参数添加到sortable _element函数到目前为止,它似乎发送了一个哈希列表,但似乎我仍然缺少有关整个嵌套订单的信息....
我确信之前已经完成并且不想尝试重新发明轮子,但我似乎无法找到控制器动作的任何示例< - >视图与js函数设置来处理可排序 acts_as_nested_set
任何有关在rubyonrails中创建交互式可排序嵌套集的帮助将不胜感激!
谢谢,
约翰
我正在使用MySQL中的树结构,使用嵌套集模型重新呈现.
我希望你们中的一些SQL专家可以帮我构建一个SELECT查询.
我希望能够使用LIKE匹配一组节点.对于匹配的每个节点,我还需要该节点的祖先的逗号分隔列表,以及该节点的直接子节点的逗号分隔列表.
我不确定从哪里开始 - 如果在单个查询中甚至可以实现这样的事情.(目前我在循环中使用查询来完成此操作.)我希望的是一个看起来像这样的结果集....
从字符串"qu"开始并查询表"Body"我得到...
Node | Parent Nodes | Immediate Children
Quads Leg, Lower Body, Muslces Vastus Lateralus, Vastus Medialis, Rectus Femoris
Obliques Core, Trunk, Muscles Inner obliques, outer obliques
Run Code Online (Sandbox Code Playgroud)
如何在不循环查询的情况下完成此任何建议将非常感激.
我正在将数据从一个数据库架构迁移到另一个.旧模式具有基于邻接列表的分类系统,具有id,category和parent_id.如果一个类别低于一秒,则该类别将第二个id作为其父ID.例如:
+-------------+----------------------+--------+
| category_id | name | parent |
+-------------+----------------------+--------+
| 1 | ELECTRONICS | NULL |
| 2 | TELEVISIONS | 1 |
| 3 | TUBE | 2 |
| 4 | LCD | 2 |
| 5 | PLASMA | 2 |
| 6 | PORTABLE ELECTRONICS | 1 |
| 7 | MP3 PLAYERS | 6 |
| 8 | FLASH | 7 |
| 9 | CD PLAYERS | 6 |
| 10 | 2 …Run Code Online (Sandbox Code Playgroud) 我有以下表结构,为方便起见,它也在sqlfiddle上:
+---------+-----------+---------+----------+-----------+-------------------+-----------------------------------+--------+--------------+-------------+---------------+-----------+ | rule_id | parent_id | left_id | right_id | rule_type | rule_title | rule_description | public | parse_bbcode | parse_links | parse_smilies | group_ids | +---------+-----------+---------+----------+-----------+-------------------+-----------------------------------+--------+--------------+-------------+---------------+-----------+ | 1 | 0 | 1 | 6 | cat | Sample Category 1 | | 1 | 0 | 0 | 0 | 1 2 7 | | 2 | 1 | 2 | 3 | rule | Sample Rule 1 | This is a sample rule description | …
我为Yii2使用https://github.com/creocoder/yii2-nested-sets扩展!
所以,Yii1的第一个版本很好,但在这个版本中我有一些问题.
一切都严格按手册完成!
创建所有模型时,我获得错误:
在类别表的任何查询中都会出现此错误.如果删除整个行为的行为;(
分类型号:
<?php
namespace backend\models;
use creocoder\nestedsets\NestedSetsBehavior;
use yii\db\ActiveRecord;
class Categories extends ActiveRecord
{
public function behaviors() {
return [
'tree' => [
'class' => NestedSetsBehavior::className(),
'treeAttribute' => 'tree',
],
];
}
public function transactions()
{
return [
self::SCENARIO_DEFAULT => self::OP_ALL,
];
}
public static function find()
{
return new CategoryQuery(get_called_class());
}
}
Run Code Online (Sandbox Code Playgroud)
CategoryQuery模型:
<?php
namespace backend\models;
use creocoder\nestedsets\NestedSetsQueryBehavior;
use yii\db\ActiveRecord;
class CategoryQuery extends ActiveRecord
{
public function behaviors() { …Run Code Online (Sandbox Code Playgroud) nested-sets ×10
mysql ×5
php ×4
sql ×3
ruby ×2
algorithm ×1
class ×1
database ×1
indexing ×1
nested ×1
performance ×1
rdbms ×1
routing ×1
select ×1
set ×1
sql-order-by ×1
sql-update ×1
tree ×1
yii2 ×1