2016-08-30 3 views
0

제품의 모든 관계를 삭제해야합니다. 관계가있는 항목을 삭제하려고 할 때 오류가 발생했습니다. 여기Laravel에서 모든 관계를 삭제하는 가장 좋은 방법은 무엇입니까?

public function getDelete(Product $product) 
{ 
    $name = $product->name; 

    $product->Field()->Data()->delete(); 
    $product->Field()->delete(); 
    $product->delete(); 

    return redirect('products')->with('success', 'Product <b>'.$name.'</b> successfully deleted.'); 
} 

모델입니다 : Builder.php 라인 2101에서

public function Field() 
{ 
    return $this->hasMany("\App\ProductField", 'product_id','id'); 
} 

public function Data() 
{ 
    return $this->hasMany("\App\ProductFieldData", 'product_field_id','id'); 
} 

BadMethodCallException : 여기 내 코드가 정의되지 않은 방법를 분명히 \ 데이터베이스에 전화 \ 쿼리 \ 빌더 :: 데이터()

이 오류는 제품에 ProductFieldData가없는 경우에 발생합니다. 그러나 관계 데이터가 없다면 건너 뛰지 않으면 안된다고 생각합니까?

제품을 어떻게 삭제합니까? 당신은 컬렉션을 상대하고

foreach ($product->Field()->Data as $data) { 
    $data->delete(); 
} 

당신이 그것을 반복하는 그래서 당신은 항목 컬렉션에 삭제 기능을 수행 할 수 없습니다

답변

0

이보십시오.

그런데 ON DELETE CASCADE을 사용하여이 작업을 수행해야합니까? 몇 가지 조사를해야합니다. 시간이 많이 걸릴 것입니다!

+0

같은 오류가 발생했습니다. 삭제 캐스케이드에 외래 키와 설정을 추가했으나 Laravel에 의해 먼저 삭제해야합니다. – Haroldas

+0

@Haroldas 님이 편집을 시도했습니다. plz를 시도하십시오. – Markinson

+0

@Haroldas가 작동 했습니까? 만약 당신이 이것을 대답으로 받아들이면 기쁠 것입니다. – Markinson

관련 문제