Google Mail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Message from discussion adding a method to the nested set
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Follow-up To:
Add Cc | Add Follow-up to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers that you hear
 
J. Philip  
View profile   Translate to Translated (View Original)
 More options 4 July, 00:27
From: "J. Philip" <jphi...@noatak.com>
Date: Fri, 3 Jul 2009 15:27:19 -0800
Local: Sat 4 July 2009 00:27
Subject: RE: [doctrine-user] adding a method to the nested set
You can derive a class MyNestedSet from nested set and add your own
methods in it.

Add a behavior MyNestedSetBehavior derived from
Doctrine_Template_NestedSet and override the setup method and relpace
$this->_table->setOption('treeImpl', 'NestedSet'); with
$this->_table->setOption('treeImpl', 'MyNestedSet');

After, you replace actAs : [NestedSet] with actAs :
[MyNestedSetBehavior]

I have not tried it but it should work.

Note that if you just want to add an orderBy clause, you should be able
to do it by calling the setBaseQuery($q) method of the Tree just before
you call the getDescendants methos. (Where $q contains the orderBy
clause)

-----Original Message-----
From: doctrine-user@googlegroups.com

[mailto:doctrine-user@googlegroups.com] On Behalf Of crash3k
Sent: Friday, July 03, 2009 10:57 AM
To: doctrine-user
Subject: [doctrine-user] adding a method to the nested set

Hi,

I've just started lerning Doctrine and Symfony
and now I want to add a method to the nested
set-class of Doctrine but I really don't know
how to implement it.

So... here's the method a want to add:
(As you can see it's just the "getDescendants"-method
with an option to sort the result by a specified column)

public function getDescendantsSorted($depth = null, $includeNode =
false, $orderBy = '', $orderType = 'ASC') {
  $baseAlias = $this->_tree->getBaseAlias();
  $q = $this->_tree->getBaseQuery();
  $params = array($this->record->get('lft'), $this->record->get
('rgt'));

  if ($includeNode) {
    $q->addWhere("$baseAlias.lft >= ? AND $baseAlias.rgt <= ?",
$params)->addOrderBy("$baseAlias.lft asc");
  } else {
    $q->addWhere("$baseAlias.lft > ? AND $baseAlias.rgt < ?", $params)-
>addOrderBy("$baseAlias.lft asc");
  }

  if ($depth !== null) {
    $q->addWhere("$baseAlias.level <= ?", $this->record['level'] +
$depth);
  }

  if ($orderBy != "")
    $q->orderBy("$baseAlias.$orderBy $orderType");

  $q = $this->_tree->returnQueryWithRootId($q, $this->getRootValue());

  $result = $q->execute();

  if (count($result) <= 0) {
    return false;
  }

  return $result;
}

So is there a way of loading this method into the
given nested set class?

Thanks in advance!

Greetings,
CRaSH3k


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2009 Google