Referans tarafından Atama Dizi Loop CakePHP 1.2.6 / PHP5.2.12 Hata

2 Cevap php

Ben bir veri yığını almak ve bazı verilerin bozulduğunda nedense çalışıyorum. Örneğin, ben her modellerde (hasMany) Yorum ile ilgili bazı Mesaj modeller var, ve Açıklama modellerin her bir kullanıcı belongsTo. Veri alırken, burada yorum yapmak için veritabanından elde ne var:

[Post] => Array
(
)

[Comments] => Array
(
    [0] => Array
        (
            [content] => "2010 has definitely been a busy year!"
            [created] => 2010-02-10 13:47:15
            [user_id] => 18
            [post_id] => 1
            [User] => Array
                (
                    [id] => U8
                    [username] => Uace
                    [first_name] => Uace
                )

            [_explicitType] => Comment
        )

    [0] => Array
        (
            [content] => "I can't wait..."
            [created] => 2009-12-10 13:57:36
            [user_id] => 18
            [post_id] => 1
            [User] => Array
                (
                    [id] => U8
                    [username] => Uace
                    [first_name] => Uace
                )

            [_explicitType] => Comment
        )

)

Her durumda bu (örneğin 18 kimliği, Jace, vb adı gibi) farklı olmalıdır rağmen Yorumlar [i] [User] diziler her ilk karakteri, bir sermaye U ile değiştirilmiştir.

Ben Flex etkileşim (Teşekkürler, Paweł Mysior!) AfterFind () işlevi için bir _explicitType alanı atamak için çalışıyordu bir dizi manipülasyon onu takip. İşte _explicitType sıkışmış döngü var:

if (is_array($results)) {
    foreach ( $results as &$item )
    {
            $item['_explicitType'] = $this->name;

    }
} else {
    $item[$this->name]['_explicitType'] = $this->name;
}

Ben referans atama ile ilgisi var varsayalım, ama ben neden oluyor düşünemiyorum.

2 Cevap

Ben sorunu buldum. Ben (foreach içinde dizi için onay taşındı) ve şimdi düzgün çalışıyor gibi görünüyor. Ben dizi olmayan öğeleri, aslında şeyleri kırdı çünkü bu olduğunu varsayalım. Burada test durumlarda günlük kaydı ile benim değişmiş döngü var:

foreach ( $results as &$item )
{
    if(is_array($item)) {
        $item['_explicitType'] = $this->name;
    } else {
        $copy = $item;
        $copy['_explicitType'] = $this->name;
        $this->log($copy, LOG_DEBUG);
    }
}

Ve emin olun ki, bu sermaye U adlı ilk harfini değiştirme ile veri giriş.

Bu çok garip.

Core.php 2'ye hata ayıklama ayarlayın ve sayfanın altındaki sql günlüğüne bakmak, belki orada bir şey bulacaksınız. Ayrıca tüm modellerde (app, post, kullanıcı, yorum) bakmak. Bunun neden bazı beforeFind () olabilir. O da basit bir kullanıcı-> find ne zaman olur () mı?

Btw. veri burada nasıl geri alabilirim?