ActiveRecord ve birçok ilişki çok?

2 Cevap php

I'm trying to implement the Active Record pattern to a ZF project. I used to work with a similar approch before ve it works well.

Ama şimdi benim sorunum, benim modelleri ile çok-çok ilişkisi nasıl işleneceğini hakkında.

İşte bir örnek:

Diyelim ki bir kullanıcı modeli var diyelim.

<?php
require_once 'MLO/Model/Model.php';

class Model_User extends MLO_Model_Model
{   
    protected $_data = array(
        'id' => NULL,
        'email' => NULL,
        'password' => NULL,
    );
}

Hiçbir sorun.

Ama ne bir Grup modeli eklerseniz?

require_once 'MLO/Model/Model.php';

class Model_Group extends MLO_Model_Model
{   
    protected $_data = array(
        'id' => NULL,
        'name' => NULL,
        'desc' => NULL,
    );
}

ve

require_once 'MLO/Model/Collection.php';

class Model_Groups extends MLO_Model_Collection
{   
    protected $_modelClass = 'Model_Group';
}

I have then a mapper which convert results from the db to model object, ve vice versa.

My question is, how to hvele many-to-many relationship with my models ?

Nerede "ilişkiyi kaydetmek" gerekir?

İşte ben düşünmek bazı ipuçları olduğunu:

class Model_User extends MLO_Model_Model
{   
    protected $_data = array(
        'id' => NULL,
        'name' => NULL,
        'desc' => NULL,
        'groups' => NULL,  // where groups will be an instance of the Model_Groups
    );
}

Aynı yaklaşımla, nerede grupları gibi bir dizi olacak:

array(3) {
  [0]=>
  array(3) {
    ["id"]=>
    string(1) "9"
    ["name"]=>
    string(1) "Guest"
    ["desc"]=>
    string(1) "Some desc"
  }
  [1]=>
  array(3) {
    ["id"]=>
    string(1) "64"
    ["name"]=>
    string(1) "Moderator"
    ["desc"]=>
    string(1) "Some desc"
  }
  [2]=>
  array(3) {
    ["id"]=>
    string(1) "5"
    ["name"]=>
    string(1) "Admin"
    ["desc"]=>
    string(1) "Some desc"
  }
}

Başka bir fikir?

P.S : I'm not trying to hvele ACLs or similar things, it's just for example.

2 Cevap

Zend_Db_Table bu işleve sahiptir! :)

Bu tablo ilişkileri yönetmek "dependentTables" ve "referenceMap" kendi kavramlarını kullanır ve DB başvuru kısıtlamaları desteklemiyorsa bile sizin için CASCADE'a yapmak ve malzeme SİLEBİLİRSİNİZ

Zend_Db_Table Relationships

En etiketlerini yayınlamak için sorununuzu çevirmek - Let sonrası tek sayıda etiket ve bir etiket birçok mesaj ile kullanılan var - bu (en azından benim için) kolayca anlaşılabilir:

Eğer önermek gibi Page'in $ _data için ['etiketler'] eklersiniz. Ve adjected etiket nesneleri dizisi olacak. Analogicaly Tag için ben adjected sayfaları ile ['sayfa'] eklemek istiyorum. Ama tabii bunun için tembel yükleme kullanmak istiyorsunuz.