이 laravel에서 테이블 및 쿼리를 삭제 소프트를 사용하여 약간의 트릭이있다 :
우리가
$objCars = Car::where("color","blue");
같은 것을 만들 시스템은 다음과 같이 실행합니다 :
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
"color" = 'blue'
지금까지 그렇게 좋았습니다.deleted_at가 null로하는 곳 새 쿼리는 모든 자동차를 반환합니다
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
"color" = 'blue'
OR
"color" = 'red'
: 우리는 "orWhere"방법을 적용 할 때, 뭔가 재미는 그런 일을 실행합니다
$objCars = Car::where("color","blue")->orWhere("color","red");
시스템을 발생 delete_at가 null이 아닌 경우에도 색상은 파란색이거나 색상이 빨간색입니다.
SELECT
*
FROM
cars
WHERE
(
deleted_at IS NULL
AND
"color" = 'blue'
)
OR
"color" = 'red'
당신은 폐쇄를 통과하는 "경우"방법을 변경해야합니다,이 문제에서 탈출 : 더 명시 적으로 문제를 보여 무엇이 다른 쿼리의 동일한 동작이다. 그와 마찬가지로 :
$objCars = Car::where(
function ($query) {
$query->where("color","blue");
$query->orWhere("color","red");
}
);
그런 다음, 시스템이 그런 일을 실행합니다 :
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
(
"color" = 'blue'
OR
"color" = 'red'
)
이 마지막 쿼리, deleted_at가 null 어디 색상이 될 수 있습니다 또는 빨간색 또는 파란색 모든 자동차 검색, 우리가 원하는대로.
개체를 삭제 한 위치와 페이지에서 표시 할 위치를 코드에 게시 할 수 있습니까? – msturdy
고마워, 나는 이미 문제를 해결했다. 나는 Eloquent 대신 Fluent 쿼리를 사용했다. 이것은이 행동의 이유이다. –
미래의 방문자 : [4.2를 사용하고 있다면 이것을 읽는다] (https://laracasts.com/ 포럼 /? p = 1766-laravel-4-2-soft-deletes-issue/0) – zehelvion