Bir nesne yumuşak silinmiş olmuştur zaman uskur biliyor mu, yani bu çocuk kişiler hala silinmiş ebeveyn gösterebilirim?

3 Cevap php

Ben bir MySQL veritabanı nesneleri yumuşak silme ve Propel ORM kullanıyorum. Gerçek satırlar silinemiyor çünkü ben çalışmak için silme-yumuşak, ama benim zorlanan ebeveyn-çocuk ilişkileri kaybetme pahasına aldık.

Ne zaman erişim null başvuru istisnası atılır olmadığını böylece bir rekor, yumuşak silinmiş olduğunu bilmek uskur için herhangi bir yolu var mı? Bu şekilde, bir üst silinmiş olmasına rağmen, onun alt hala read bu ilişki, ama ne zaman updating, bir çocuk, ya da creating, yeni bir çocuk, silinen ebeveyn erişilebilir değil.

Örneğin,

Kitap bir AuthorID vardır ve AuthorID ait yazar yumuşak silinmiş ise, o zaman:

$book->getAuthor();

Doğru yazar dönecekti (görüntüleme amaçlı). Yeni bir kitap eklendi Ancak, eğer yumuşak silindi yazar seçilecek mevcut değildir.

Bu işlevsellik uskur yerleşik ise herkes biliyor mu?

3 Cevap

Bir Yazar silinecek izin neden emin değilim ama onun eserleri değil mi (ya da, temelde, neden bu projede bir senaryo olarak gelir) ama özel kriterleri oluşturabilir ve yürütebilirsiniz. Aşağıdaki kodu kullandığınız uskur sürümüne bağlıdır (ancak kavram aynı kalır):

$c = new Criteria();
$c->getNewCriterion(self::AUTHOR_ID, $parentId);
return self::doSelect($c, $connection);

Sadece bu soru karşısında tökezledi. Bunu açıklayan işlevselliği için silme yumuşak kullanmak için çok daha mantıklı olur gibi görünüyor. Ben çok olsun yazarlar, isEnabled denilen yani mantıksal bir alan etkin olan bayrak bir alan oluşturmak tavsiye ederiz.

Daha sonra, bu durumda AuthorQuery sınıfı için oluşturulan filtre yöntemini kullanabilir

AuthorQuery::create->filterByisEnabled()
                   ->find();

Bir nesne hala uygulamada kullanılan olacak eğer silmek için gerçekten uygun değildir. Yumuşak silme işlevi sadece gerçekten referans için veya hatalar dönmek olduğunu.

Silme yumuşak bir kırık soyutlama değildir. Sen (: http://propelorm.org/blog/2011/08/29/introducing-archivable-behavior-and-why-soft-delete-is-deprecated.html neden uskur blog bakınız) yerine archivable davranışını kullanmanız gerekir