Datamapper에서 관계를 디자인 할 때 관련 객체와 동일한 이름을 바인딩하도록 바인딩됩니다.이 클래스는 클래스 이름으로 Application_Model_User
과 같은 것을 사용할 때 너무 편리하지 않습니다. "class"키가있는 구성 옵션이 있다고 말하려고하는 사람들에게는 알 수 있습니다. 그곳에 가봤습니다. 관련된 객체를 가져 오기 위해서만 작동하며, 객체를 업데이트하는 데는 사용되지 않습니다. 여기 관계 이름을 CI Datamapper의 관련 모델과 독립적으로 만들려면 어떻게해야합니까?
// User Model
class UserModel extends Datamapper
{
public $table = 'users';
public $has_many = array(
'roles' => array(
'class' => 'RoleModel',
'other_field' => 'usermodel',
'join_other_as' => 'role',
'join_self_as' => 'user',
'join_table' => 'users_roles'
),
);
}
class RoleModel extends DataMapper
{
public $table = 'roles';
public $has_many = array(
'usermodel' => array('class' => 'UserModel',
'other_field' => 'roles',
'join_other_as'=> 'user',
'join_self_as' => 'role',
'join_table' => 'users_roles')
);
}
// controller code. Make sure you have a role with INT id = 2, and a user with INT id = 5 in your db
$user = new UserModel(2);
$role = new RoleModel(5);
$user->save($role);
이 코드가 제공을 오류가 있지만 관계가 "roles"에서 "rolemodel"로 이름 변경되면 올바르게 작동합니다 (조인 테이블 user_roles
에 새 레코드가 삽입됨을 의미).
그래서 도움이 될 수있는 CI의 Datamapper 사용자가 있으면 관계를 올바르게 정의하는 방법을 알려주십시오.
안녕하세요 swatkins는 충분히 오래 걸리지 않은 것 같습니다. :) 나는 다음과 같이 썼다 : "클래스 키를 가진 구성 옵션이 있다고 말하려고 서둘러야하는 사람들을 위해, 나는 그것을 시도했다. 나는 내 견해를 증명하기 위해 간단히 예시를 제공 할 것이다. – Slavic
거기에 코드 스 니펫을 추가했습니다. – Slavic
좋아, 나는 당신의 질문을 오해했다 (코드 도움). 관계 키를 사용하여 객체를 관계로 저장할 수 있습니다 :'$ object-> save ($ related, $ relationship_key)'. 그래서 당신은'$ user-> save ($ role, "roles");을 사용할 필요가 있습니다.이 페이지의 하단을보십시오 : http://datamapper.wanwizard.eu/pages/save.html – swatkins