after setting $galleries in my view with 'findAllThreaded()
<?php foreach ($galleries as $row): ?>
<tr>
  <td style="text-align:left;"><?php echo
$html->link($row['Gallery']['title'],'/galleries/edit/' .
$row['Gallery']['id'])?></td>
  <td> _root </td>
</tr>

<?php if(!empty($row['children'])):  foreach ($row['children'] as $subGal): ?>
<tr>
  <td style="text-align:left;margin-left:20px;"><?php echo
$html->link($subGal['Gallery']['title'],'/galleries/edit/' .
$subGal['Gallery']['id'])?></td>
  <td> <?php echo $subGal['Galleries']['title']; ?> </td>
</tr>
<?php endforeach; endif; ?>
<?php endforeach; ?>

 Since I have only one level, it's all I need.
 Any suggestions from the hardcore coders, to make a n-level loop ?

 Spark


On 6/15/06, Olivier Percebois-Garve <[EMAIL PROTECTED]> wrote:
>
>  How do you use the array returned by $this->Model->findAllThreaded() ?
>
>
>  DJ Spark wrote:
>  I use this in my Gallery Model:
>
> var $hasMany = array(
>  'Galleries' => array(
>  'className' => 'Gallery',
>  'order' => 'Galleries.ord ASC',
>  'foreignKey' => 'parent_id'));
> var $belongsTo = array(
>  'Galleries' => array(
>  'className' => 'Gallery',
>  'order' => 'Galleries.ord ASC',
>  'foreignKey' => 'parent_id'));
>
> First, note the 'Galleries' (you change that association name for any
> other, just dont use the model name). Second, you might want to know
> more about $this->Model->findAllThreaded() . It returns a *VERY*
> useful array , with ['child'] and everything. I *heart* CakePHP :)
>
>  spakr
>
>
> On 6/15/06, I. E. Smith-Heisters <[EMAIL PROTECTED]> wrote:
>
>
>  Hi all,
>
> I've found a few threads on related subjects, but none of them offer a
> solution:
>
> http://groups.google.com/group/cake-php/browse_thread/thread/8ad0ebbb9171b5a4/82f28d0b433191be?q=finderSQL&rnum=7#82f28d0b433191be
> http://groups.google.com/group/cake-php/browse_thread/thread/ed9f11b62fd2d223/c46ddbf9860e0be6?q=finderSQL&rnum=3#c46ddbf9860e0be6
> http://groups.google.com/group/cake-php/browse_frm/thread/aba68ec53a2ae064/9988348a93f13d1e#9988348a93f13d1e
>
> I have a table that looks like this:
>
> +-----------+------------------+------+-----+---------+----------------+
> | Field | Type | Null | Key | Default | Extra
> |
> +-----------+------------------+------+-----+---------+----------------+
> | id | int(10) unsigned | | PRI | NULL | auto_increment
> |
> | name | varchar(255) | YES | | NULL |
> |
> | ui_name | varchar(50) | | | |
> |
> | parent_id | int(10) unsigned | YES | | NULL |
> |
> +-----------+------------------+------+-----+---------+----------------+
>
> which represents nested menus. I would think it would be trivial to
> allow each MenuItem to have children (whose parent_id is equal to its
> id) by using hasMany.
>
> So, first I tried this:
> class MenuItem extends AppModel {
>  var $name = 'MenuItem';
>  var $useTable = 'tester';
>
>  var $validate = array (
>  'name' => VALID_NOT_EMPTY,
>  );
>  var $hasMany = 'MenuItem';
> }
>
> but that just overwrites the main node,
> $this->MenuItem->read():
> array(1) {
>  ["MenuItem"]=>
>  array(0) {
>  }
> }
>
> so I tried something like this instead:
>
>  var $hasMany = array (
>  'child' => array (
>  'className' => 'MenuItem',
>  )
>  );
>
> which at least doesn't overwrite the main object, but still doesn't
> populate the child array:
> array(2) {
>  ["MenuItem"]=>
>  array(4) {
>  ["id"]=>
>  string(1) "4"
>  ["name"]=>
>  string(9) "community"
>  ["ui_name"]=>
>  string(9) "Community"
>  ["parent_id"]=>
>  NULL
>  }
>  ["child"]=>
>  array(0) {
>  }
> }
> So then I tried a finderSQL parameter
>
>  var $hasMany = array (
>  'child' => array (
>  'className' => 'MenuItem',
>  'finderSQL' => 'SELECT * FROM tester AS one LEFT JOIN tester AS two
> ON one.id = two.parent_id'
>  )
>  );
>
> but that has the same output on read() as the attempt with finderSQL
> undefined. Unfortunately, I haven't found a single successful example
> of using finderSQL, so it's hard to tell what sort of output the SQL
> statement should have. I just grabbed and modded this statement from
> one of the other threads I mentioned.
>
> Okay, so then there's findAllThreaded and guiListTree. The former seems
> to work (albeit it's kind of uncontrollable), but I really think this
> part of the model belongs in the model definition.. The latter,
> guiListTree doesn't seem to work as expected and is marked as
> deprecated in the documentation..
>
> So, does anyone have any suggestions for building a tree out of a
> self-joining table?
>
> Thanks much,
> Ian Smith-Heisters
>
>
>
>
>
>
>
>  >
>
>


-- 
[web] http://synapsisdi.com.br
[livesets] http://djspark.com.br

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/cake-php
-~----------~----~----~----~------~----~------~--~---

Reply via email to