ZF 프로젝트에 활성 레코드 패턴을 구현하려고합니다. 이전에 비슷한 승인을 받았지만 잘 작동합니다.ActiveRecord와 다 대다 관계?
하지만 지금 내 문제는 내 모델과 다 대 다 관계를 처리하는 방법에 관한 것입니다.
다음은 예입니다.
사용자 모델이 있다고 가정 해 봅니다.
<?php
require_once 'MLO/Model/Model.php';
class Model_User extends MLO_Model_Model
{
protected $_data = array(
'id' => NULL,
'email' => NULL,
'password' => NULL,
);
}
없음 문제.
하지만 그룹 모델을 추가하면 어떻게됩니까?
require_once 'MLO/Model/Model.php';
class Model_Group extends MLO_Model_Model
{
protected $_data = array(
'id' => NULL,
'name' => NULL,
'desc' => NULL,
);
}
및
require_once 'MLO/Model/Collection.php';
class Model_Groups extends MLO_Model_Collection
{
protected $_modelClass = 'Model_Group';
}
는 그때 그 반대의 경우도 마찬가지 객체를 모델링하기 위해 DB에서 결과를 변환 매퍼하고 있습니다.
제 질문은 내 모델과 다 대 다 관계를 처리하는 방법입니다.
어디에서 "관계를 저장해야합니까?"
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"
}
}
또 다른 아이디어 : 그룹은 같은 배열 될 것 같은 접근 방식으로
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
);
}
: 여기
내가 생각 몇 가지 단서입니까?P .: ACL이나 비슷한 것을 처리하려고하지 않습니다. 단지 예입니다.
을 지원하지 않는 경우 당신을 위해 물건을 삭제할 수 있습니다 따라서 Pages와 Tags (또는 예제에서는 Users and Groups)에 Tags와 Pages를 할당하고 배열의 클래스 Name을 Tag/Page 객체를 지연로드하도록 전달합니까? 태그/페이지 객체가 포함 된 컬렉션 객체의 사용에있어 문제점이 있습니까? –
물론 당신은 Collection을 사용할 수 있습니다 ... :) 꽤 똑같습니다 - 저는이 방법으로, sry ... 그렇게하는 데 익숙합니다. 문제는 무한 루프에 도달 할 수 있습니다. , 그들은로드되고 각 태그에는 페이지,로드 페이지 ...)가 있기 때문에 게으른로드가 필요한 이유입니다. 또한 꽤 데이터베이스 집약적 인 얻을 수있는 결과를 저장할 캐시 일종의 사용하는 것이 좋습니다 :) –