저는 MongoDB와 Lithium을 처음 접했고 중첩 된 문서를 다루는 "좋은 방법"을 찾을 수 없습니다. 나는Lithium 및 MongoDB에서 중첩 된 문서/배열로 작업하기
$user = Users::find('first' ...);
$user->somenewfield = array('key' => 'val');
을하려고 할 때 제가 "somenewfield"얻을 것은 문서 객체입니다 것으로 나타났습니다. 그러나 DocumentArray 클래스도 있습니다 - 그 차이점은 무엇입니까?
나는이 (예상대로) 몽고 결과
$user->save();
를 호출 할 때 :
"somenewfield" : {
"key": "value"
}
OK,하지만 나중에 배열에 새 키 - 값을 추가하고
을 시도 할 때$user->somenewfield['newkey'] = 'newval';
var_dump($user->somenewfield->to('array')); // shows the old and the new key-value pairs
$user->save(); // does not work - the new pair is not added
리튬을 사용하는 문서에 새 배열을 추가하는 올바른 방법은 무엇입니까? 배열을 업데이트/배열에 새 값을 추가하는 올바른 방법은 무엇입니까? 배열 값을위한 키를 줄까?
미리 도움을 주셔서 감사합니다. 나는 다소 붙어있어 ... 문서를 읽고 코드를 읽었지 만 어떤 점에서는 혼자서 모든 것을 알아 내기가 어렵다. :)
편집 : 내가 결국 발견 한 것은 중첩 된 배열을 사용하여야하는 것은 $ 푸시와 $ 풀 함께 : 나는 하위 문서를 처리하는 몇 가지 단점이 있다고 생각
Users::update(array('$push' => array('games' => (string) $game->_id)),
array(
'_id' => $this->user()->_id,
'games' => array('$ne' => (string) $game->_id)),
array('atomic' => false));
대단히 유용한 대체 구문을 찾으십시오. – Tom
누구든지이 문제가 다시 발생하면 리튬 테스트를 읽어보십시오! 리튬은 수백 가지가 있으며 프레임 워크에 대한 더 나은 이해를 돕습니다. – Chris