가장 좋은 방법은 무엇입니까? 예를 들면 다음과 같습니다.Laravel 4 - 소프트 삭제 및 외계인 키 참조
나는 여러 인물 관계가있는 도시가 있습니다.
어떤 이유에서든 소프트 삭제를 사용하여 도시를 삭제해야하는 경우 일부 사람이 city_id 참조를 분실했을 수 있습니다. 이렇게하면 Laravel이 "비 객체의 속성을 얻으려고하는 중입니다"라는 오류 메시지를 표시합니다.
도시명을 분실 한 사람이 실수없이 표시 될 수 있도록해야합니다.
내가 그것은 작동하지만 나에게 추악한 조금 보이는
echo isset($person->city) ? $person->city->name : '';
같은 것을 쓸 때. 난 그냥
echo $person->city->name;
을 쓸 때 도시가 삭제 되었기 때문에
는 나는 "비 객체의 속성을 얻기 위해 시도"메시지가 표시됩니다.
어떻게 처리합니까?
laravel이 도시는 그 다음 행이 소프트 삭제 된 null의 경우 delete_at 필드가 null가 아닌 것으로 확인됩니다 사람 개체에 개체를 연결하는 데 사용하는 쿼리 및 결과에 나타나지 않습니다. 이것을 둥글게하려면 어지러운 비트를하십시오. –
고마워요. @MattBurrow. 어쩌면 내가 다른 방식으로 그것을 구축해야합니다. 도시 테이블에서 "status : enum ('active', 'inactive')와 같은 일부 필드를 사용하여 html datagrid 사용자의 유산"삭제 된 "도시를 표시하고 도시 DataGrid의 비활성 도시를 숨 깁니다. –
관계 메소드에'withTrashed()'를 사용하여 소프트 삭제 된 결과를 쿼리에 포함 시키십시오. 여기에는 모든 삭제 된 모델 즉 사례가있는 도시가 포함됩니다. 그러면'$ person-> city-> name'을 사용할 수 있습니다. –