laravel tabloları ve sorguları silmek yumuşak kullanarak küçük bir hile yok, geçerli:
biz
$objCars = Car::where("color","blue");
gibi bir şey yaratmak Sistem şu gibi bir şey yürütür:
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
"color" = 'blue'
Şimdiye kadar, çok iyi.deleted_at null ve burada yeni sorgu tüm araba dönecektir
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
"color" = 'blue'
OR
"color" = 'red'
: Biz "orWhere" yöntemini uygulamak Fakat, komik bir şey böyle bir şey çalıştırır
$objCars = Car::where("color","blue")->orWhere("color","red");
sistem olur renk mavi renktedir VEYA renk kırmızıysa, delete_at boş değilse bile.
SELECT
*
FROM
cars
WHERE
(
deleted_at IS NULL
AND
"color" = 'blue'
)
OR
"color" = 'red'
Bir Closure'u geçen "nerede" yöntemini değiştirmek gerekir, bu soruna kaçmak için: Daha açık bir şekilde sorunu ne gösterecek bu diğer sorgunun aynı davranış vardır. Bunun gibi:
$objCars = Car::where(
function ($query) {
$query->where("color","blue");
$query->orWhere("color","red");
}
);
Sonra, sistem böyle bir şey yürütür:
SELECT
*
FROM
cars
WHERE
deleted_at IS NULL
AND
(
"color" = 'blue'
OR
"color" = 'red'
)
Bu son sorgu, deleted_at geçersiz ve nerede renk olabilir veya kırmızı ya da mavi tüm arabalar için arar istediğimiz gibi.
Nesneleri sildiğiniz yeri ve sayfada görüntülemelerini istediğiniz yeri yazdırabilir misiniz? – msturdy
teşekkürler, sorunu zaten çözdüm ... Eloquent yerine Fluent sorguları kullanıyordum, bu davranışın sebebi buydu –
Gelecekteki ziyaretçiler için: [4.2 kullanıyorsanız bunu okuyun] (https://laracasts.com/ forum /? p = 1766-laravel-4-2-soft-siler-issue/0) – zehelvion