Kohana ORM - Bunu nasıl yapabilirim?

3 Cevap php

Ben bugün vermek oa denemek düşündüm önce ORM ile hiç çalışmamış olması, ben nasıl çözüleceğini bilmiyorum benim ilk sorun geldim (nedeniyle ORM gerçekten nasıl çalıştığını anlamak benim eksikliği.)

Diller, Kodları ve bir pivot tablo Codes_Languages: Üç tablo var diyelim. Bunlar düzgün modellerinde ilişkileri tanımlamıştır.

Şimdi, tüm dillerde isimleri yankı, ben böyle gidebiliriz:

$languages = ORM::factory('languages')->find_all();
foreach ($languages as $language)
{
  echo $language->name, '<br />';
}

Belirli bir dilin içinde kodlarının tüm isimlerini yankı istiyorsanız, ben böyle gidebiliriz:

$language = ORM::factory('languages', 1);
foreach ($language->codes as $code)
{
  echo $code->title, ' ', $code->description;
}

Ama nasıl bunu yapmak gerekirse hakkında: Her dilde (code.time_posted üzerine DESC göre sıralanmıştır) son beş kodlarını Al?

$languages = ORM::factory('languages')->find_all();
???$languages->codes = ORM->order_by('time_posted', 'desc')->limit(5);???
foreach ($languages as $language)
{
  echo $language->name, '<br />';
  foreach ($language->codes as $code)
  {
    echo $code->name, ' ', $code->description;
  }
}

Ben yapmaya çalışıyorum ne açıklar düşünüyorum bazı sözde-kod etrafında soru işaretleri koydum. Ben Kohana biraz daha iyi düşünülmüş olduğunu düşünüyorum çünkü son zamanlarda CodeIngiter dönüştürülmüş ettik, ancak belgeler eksik görünüyor ve ben ne gerekli nasıl yapılacağını bulamadım.

Herhangi bir rehberlik harika olurdu. Teşekkürler.

3 Cevap

Disclaimer: Ben Kohana en ORM hiç kullanmadım, ama böyle bir şey duyduğunuz gibi okuma the documentation, öyle görünüyor:

ORM::factory('languages')->orderby('time_posted', 'DESC')->find_all(5);

Sen kullanabilirsiniz neredeyse tüm Kohana en query builder methods orderby, join vb daha karmaşık sorguları yapmak için ORM nesne üzerinde gibi.

(Bildiğim kadarıyla PHP Orms gitmek gibi, Doctrine o alır gibi yaklaşık olarak iyidir. Gelmeli integrate nicely Kohana, ya da bu konuda herhangi bir başka çerçeve ile.)

Eğer bu şartları izlerseniz Kohana ORM çalışır:

  1. Tablo adı (zaten yapmış wich, 'dil' gibi) çoğul olmalıdır;
  2. Tablo otomatik artış (gerekli) ile bir kimliğe sahip olmalıdır;
  3. Sen gibi ORM sınıf (Bu bir değil çoğul olarak, 'dil'), uzanan bir Model oluşturmanız gerekir:

    sınıf Language_Model genişletir ORM {}

Sen ikincisi sonrası Kohana belgelerine aşağıdaki yukarıdaki sınıfa bazı ek parametreler, yapamam.

Bu deneyin:

$languages = ORM::factory('languages')->find_all();

foreach ($languages as $language)
{
  echo $language->name, '<br />';
  foreach ($language->order_by('time_posted', 'desc')->limit(5)->codes as $code)
  {
    echo $code->name, ' ', $code->description;
  }
}

Ben henüz denemedim, ama çalışması gerekir; Ben şimdi bir kaç hafta boyunca Kohana en ORM kullanarak oldum.