Kohana 3 ORM: Pivot tablodan veri almak nasıl?

2 Cevap php

Ben üç mysql tablo 'kullanıcıların', 'öğeleri' de, depolanan verilere erişmek için ORM kullanmaya çalışıyor, ve çok-çok ilişki için bir pivot tablo ediyorum: 'user_item'

I-http://stackoverflow.com/questions/1946357/kohana-3-orm-read-additional-columns-in-pivot-tables arasındaki yol takip

ve çalıştı

    $user = ORM::factory('user',1);
    $user->items->find_all();

    $user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items));
    if ($user_item->loaded()) {
        foreach ($user_item as $pivot) {
            print_r($pivot);
        }    
    }

Ama SQL hata alıyorum:

"Unknown column 'user_item.id' in 'order clause' [ SELECT user_item.* FROM user_item WHERE user_id = '1' AND item_id = '' ORDER BY user_item.id ASC LIMIT 1 ]"

User_item.id: Kohana var olmayan bir sütuna göre öğeleri sipariş için çalışıyor çünkü hangi açıkça yanlıştır. Bu Pivot tablonun birincil anahtarları iki diğer tabloları yabancı tuşları, 'Kullanıcılar' ve 'ürün', çünkü bu kimliği yok.

Kullanmaya çalışıyor:

$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items))
                    ->order_by('item_id', 'ASC');

O order_by() görünüyor ya fabrikanın ikinci argüman verilirse herhangi bir sql sorguları göz ardı edilir gibi, hiç fark etmez.

Bu sorgu ile başka bariz bir hata olduğunu tüm unsurları içermelidir item_id ='',.

Ben bile bu sorunları vardı Yani benim soru how can I get access to the data stored in the pivot table, ve aslında how can I get access to the all items held by a particular user?

Teşekkürler

2 Cevap

Varsayılan olarak, Kohana en ORM modellerinin tüm tablonun birincil anahtar olmasını bekliyoruz 'id.' Sen başka bir şey için model $ _primary_key ayarlamanız gerekir.

$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items));

Bunu çalışması için bir tek item_id bir değer değil, nesnelerin bir dizi sağlamak gerekir düşünüyorum.

Also, to find all entries for a single user you should be able to do this: $user_items = ORM::factory('user_item', array('user_id' => $user));

Bu sorunuza cevap oldu mu?