라라벨을 이용하면 db 에서 소프트 삭제(일종의 임시 삭제) 라는 기능을 이용할수 있다.
실제 db row 를 삭제하는 것이 아니라 deleted_at 이라는 컬럼에 삭제 일자를 기록하여 삭제된 것처럼 동작하게 하는 것이다.
해당 model 에서 아래와 같이 SoftDeletes trait 를 사용하고 해당 테이블에 deleted_at 컬럼을 추가 하기만 하면 된다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Flight extends Model
{
use SoftDeletes;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
}
하지만 가끔 삭제된 row 를 조회해와야 할때가 있다.
이럴때는 withTrashed() 라는 함수를 이용하는데 deleted_at 이 null 이 아닌 경우까지 모두 조회해온다.
그런데 SoftDeletes 를 선언했는데 withTrashed does not exist 에러가 발생했다.
이 경우는 __construct 함수를 오버라이딩 할때 상위클랙스의 __construct 함수를 호출하지 않았기 때문에 발생할 가능성이 높다.
아래의 함수를 호출하여 오류를 수정했다.
public function __construct()
{
parent::__construct();
}
'개발 > PHP 라라벨' 카테고리의 다른 글
웹에서 애플로그인 (Sign In with Apple) 구현을 위한 설정 (0) | 2023.03.17 |
---|---|
라라벨 큐 & Database 사용하기 (0) | 2023.01.31 |
DataTables 엑셀 다운받기에서 셀렉트 박스 (0) | 2021.06.29 |
DataTables 상태값 유지 (데이터 소스를 서버 측 처리 ) (1) | 2021.03.15 |
[오류사항] Trying to access array offset on value of type int (1) | 2021.03.10 |