Laravel에서 나는 projects
테이블을가집니다. 프로젝트는 다른 프로젝트의 하위 프로젝트 일 수 있습니다. 이 parent-child
관계를 같은 projects
테이블에 유지합니다.Laravel 부모 자식 관계, 부모로서 자신을 확인하지 마십시오
프로젝트를 편집 할 때 사용자는 선택 상자에서 상위 프로젝트를 선택합니다. 그러나 나는 편집중인 동일한 프로젝트를 선택하는 사용자를 방지하려면; 부모 프로젝트로 이것은 루프를 일으킬 것이므로 에러가된다.
어떻게하면됩니까? 가장 좋은 해결책은 내가 생각할 수있는 사용자 정의 유효성 검사 규칙을 작성하는 것입니다, 그러나, 그 경우, 어떻게 id 속성을 project_id 필드에 대해 검사 할 수 있습니까? 또는 유효성 검사기 이외의 다른 솔루션이 있습니까?
나는 선택 상자에서 그 프로젝트를 제외 할 수 있지만, 누군가가 데이터를 게시하고 project_id 값을 수정하는 경우 (편집중인 프로젝트의 동일한 값으로 설정), 무한 루프 일어날 것이다.
업데이트 : 제가 위에서 언급 한 바와 같이
<div class="form-group">
{{ Form::label('project_id', 'Parent Project:') }}
{{ Form::select('project_id', [null => null] + Project::lists('name', 'id'), null, ['class' => 'form-control']) }}
</div>
, "선택 상자에서 현재 프로젝트 ID를 포함하지"적절한 해결책이 아니다 : 다음은 부모 프로젝트 입력 세대 내 코드입니다. 응용 프로그램은 여전히 취약합니다. 보다 적절한 방법으로 예방해야합니다.
Laravel 4의 같은 설명과 함께 모든 검증 종류, 난 그냥 선택 상자에 사용하지 않도록한다. 가장 직접적인 방법. 또한 몇 가지 코드를 게시하는 것이 마음에 드십니까? Project_id가 부모를 포함한다고 가정한다면 왜 그렇습니까? – KyleK
편집 양식입니다. 그것은 단지 부모를 포함하지 않습니다. 편집 양식의 선택 상자에는 모든 프로젝트가 포함되어 있으므로 사용자는 상위 프로젝트를 현재 프로젝트 중 하나로 변경할 수 있습니다. –