2013-06-12 1 views
0

모델의 여러 레코드를 업데이트하는 방법을 생각해보고 YiiBooster를 사용하면서 확장 된 그리드를 사용하여 대량 작업을 수행 할 수 있음을 확인했습니다.Yii 현재 부모 레코드를 기반으로하는 하위 레코드 업데이트

웹에서 찾은 대부분의 예제는 Ajax를 사용하여 여러 레코드를 삭제하는 방법을 보여 주지만 요구 사항은 약간 다릅니다. Yii의 초보자로서 나는 이것에 적절한 해결책을 찾기 위해 고심하고있다.

기본적으로 나는 부모와 자식에게 일대 다 관계가있는 두 가지 모델을 가지고 있습니다. 자식 모델에는 부모 ID를 사용하여 어느 부모를 참조하는지 필드가 있습니다.

응용 프로그램의 프런트 엔드에서 사용자는 상위 업데이트보기로 이동 한 다음 해당 부모에 할당 된 모든 하위 목록을 볼 수 있습니다. 일괄 업데이트 작업을 수행 할 수있는 모든 자식의 표 목록을 보여주는 모달 창을 만들었습니다. 이렇게하면 선택한 모든 하위 항목에 상위 ID가 할당됩니다.

레코드를 업데이트하는 데 사용될 확장 된 눈금보기 및 컨트롤러에서 편집해야하는 것이 확실하지 않으므로 누구나 나를 도와 줄 수 있습니까? 내 부모 업데이트보기에서

다음과 같이 내가 renderPartial를 사용하여 어린이의 인덱스보기에서 끌어 :

<?php $this->renderPartial('application.modules.children.views.childviews.addChild', array('dataProvider' => new CActiveDataProvider('Children'))); ?> 

그때 내 아이의 인덱스보기에서 확장 그리드를 가지고 :

<?php 
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'type' => 'striped bordered', 
    'id' => 'children-grid', 
    'dataProvider' => $dataProvider, 
    'bulkActions' => array(
     'actionButtons' => array(
      array(
       'buttonType' => 'link', 
       'type' => 'primary', 
       'size' => 'small', 
       'label' => 'Bulk Action', 
       'url' => array('batchUpdate'), 
       'htmlOptions' => array(
        'class' => 'bulk-action' 
       ), 
       'id' => 'child_id', 
       'click' => '' 
      ) 
     ), 
     'checkBoxColumnConfig' => array(
      'name' => 'child_id' 
     ), 
    ), 
    'columns' => array(
     'child_id', 
     'child_status', 
     'parent_id', 
     array(
      'class' => 'bootstrap.widgets.TbButtonColumn', 
      'buttons' => array(
       'update' => array(
        'label' => '<i class="icon-user"></i> <span>View Child</span>', 
        'options' => array('class' => 'btn btn-small'), 
        'url' => 'Yii::app()->createUrl("children/update", array("id"=>$data->child_id))', 
       ), 
      ), 
     ), 
    ), 
)); 
?> 

컨트롤러에서 update 액션을 호출하는 일종의 onclick 이벤트가 필요하다고 생각합니다.이 액션은 선택된 부모 레코드의 parent_id 열을 현재 상위 업데이트 페이지의 부모 ID로 업데이트합니다.

전 누군가가 도움을 줄 수 있기를 바랍니다. 미리 감사드립니다.

+0

내 질문은 자식 레코드에 parent_id가없는 경우 어떻게 부모와 함께 표시 할 것인가입니다. – jmarkmurphy

+0

현재 부모 ID는 자식 테이블에 하드 코드됩니다. 이것은 기능을 작동 시키려고 시도하는 동안입니다. 상위에 하위 레코드가없는 경우 페이지는 사용자에게 레코드가 없음을 알립니다. 많은 감사합니다 – auren27

+0

내 생각에 부모 키의 대량 할당이 필요하지 않습니다. 처음에 자녀를 만들 때 할당되어야합니다. – jmarkmurphy

답변

0

질문에 언급 한대로 일대 다 많은 관계가 아니라 다분히 많은 관계를 원합니다. 내가 말하는 이유는 당신이 당신의 경매에 미리 정의 된 속성 집합에서 선택하고 싶어하는 것 같습니다. 이 경우 부모 (경매)와 원근감있는 아동 (속성)의 목록을 표시하고 그와 같은 확인란을 사용하여 원근감있는 아동을 선택합니다. 선택 사항을 기록하려면 별도의 데이터 모델을 사용해야합니다. 지금 당장 모범을 보이지는 않지만, 현재의 Yii 프로젝트에서 이와 같은 일을해야 할 것입니다. 거기에 갈 때 블로그에 올립니다.

+0

잠시 지났지 만 여기이 블로그 게시물은 http://jmmurphy.blogspot.com/2013/10/many-to-many-relationships-in-yii.html입니다. CheckBoxList()를 사용하여 하위 레코드를 선택합니다. – jmarkmurphy

관련 문제