2014-10-23 2 views
1

SoftDeletingTrait로 개체를 저장할 때 'deleted_at'데이터베이스 필드는 항상 NULL 값 대신 '0000-00-00 00:00:00'으로 설정됩니다. 최신 Laravel 5.0 빌드를 사용하고 있습니다.Laravel에서 내 saved_at 필드가 NULL로 설정되도록하려면 어떻게해야합니까?

내 객체 :

use Illuminate\Database\Eloquent\Model as Eloquent; 
use Illuminate\Database\Eloquent\SoftDeletingTrait; 


class Entity extends Eloquent{ 

    use SoftDeletingTrait; 

    protected $fillable = array('title'); 

} 

전화에 저장 내 : 그게 문제가되지 않습니다 그래서

public function store(Request $request) 
{ 
    $entity = new Entity; 
    try{ 
     $data = ['title' => 'Test']; 
     $entity->fill($data); 
     $entity->save(); 
    } catch(\Exception $e) { 
     echo $e->getMessage(); 
    } 
} 

는 필드 'deleted_at'데이터베이스에 NULL 값을 허용 않습니다. 모델을 쿼리 할 때 필드가 null이 아니기 때문에 레코드를 검색하지 않습니다. 이걸 어떻게 바꿀 수 있니?

+0

그것은 * * null 값을 허용하지만, 있다는 것입니다 *기본값? 'Schema'는 테이블에 대해 어떤 모습을하고 있습니까? – ceejayoz

+0

질문을 편집하여 엔티티 테이블에 대한 스키마/마이그레이션을 포함하십시오. – damiani

답변

1
과 같은 작업을 수행 할 수 있습니다

기본값이 잘못되었을 수 있습니다. 소프트 삭제-기능에 대한 적절한 열이처럼 Schema에 설정됩니다 : 당신이 Carbon 최신 기능을 활용하려면

$table->softDeletes(); 
+0

감사합니다. 이상한 이유로 테이블에 기본값 '0000-00-00 00:00:00'이 있습니다. NULL이 활성화되어 있어도 .. NULL (옵션)과 NULL (기본값) 어디 세트. 도와 줘서 고마워! – sietzekeuning

-1

당신은이 일을 2 wayes있다 : 하나는 (기본값으로) 데이터베이스에 null로 특히 deleted_at을 설정

->

을 RECOMANDED을하거나 $data = ['title' => 'Test', 'deleted_at' => NULL];

+0

내가 왜 투표를했는지 알 수 있습니까? –

0

당신은 또한 수동으로 날짜 속성에 deleted_at 열을 추가해야합니다

class Entity extends Eloquent { 
    use SoftDeletingTrait; 
    // add this line: 
    protected $dates = ['deleted_at']; 
    // 
    protected $fillable = array('title'); 
} 

(당신이 해야이 작업을 수행하지만, 소프트 삭제가 작동하는 것이 분명히 필요는 없습니다 Laravel의 4.1-> 4.2 업그레이드 문서 상태입니다.)

+1

이것이 사실이라고 생각하지 않습니다. '$ dates'는 Laravel에게 어떤 속성을 액세스 할 때'Carbon' 객체로 바꾸는 항목을 추가합니다 (손쉬운 날짜 처리 기능이 추가됩니다). 그러나 소프트 삭제가 작동하지 않아도됩니다. 나는 그냥 소프트 삭제가있는 모델에서 (L4.2)를 체크하고'$ dates'를 설정하지 않아도 잘 동작합니다. – ceejayoz

+0

그런 다음 4.1-4.2 업그레이드 문서는 "탄산염'deleted_at'이 실제로 필요하지 않으면"dates_ 속성에'deleted_at' 열을 수동으로 추가해야합니다. "라는 내용이 변경되어야합니다. 짧은 시간 동안'deleted_at'는'created_at'와'updated'at와 함께 자동으로 Carbonized 된 날짜 배열에 포함되었지만'$ dates' 속성이 다시 도입되었을 때 변경되었습니다. 그러나 당신은 정확합니다.'$ dates'에 추가하는 것은 소프트 삭제가 기능을 수행하기위한 요구 사항으로 보이지 않습니다. – damiani

+0

수정 된 답변은 '~해야'로 변경해야합니다. – damiani