Po raz pierwszy natrafiłem na ten problem. Podczas zapisywania jednego z moich modeli pojawia się komunikat o błędzie: "Ten wiersz został oznaczony jako tylko do odczytu". Nie wiem, dlaczego otrzymuję ten błąd i jak go rozwiązać. Ślad stosu mi nie pomógł. Jak mogę rozwiązać ten problem, aby móc zapisać rekord?Zend Framework: Ten wiersz został oznaczony jako tylko do odczytu
Odpowiedz
Po wiersz oznaczony jako tylko do odczytu może być wynikiem z jednej z następujących operacji:
- Zapytanie
Zend_Db_Select
połączone z innej tabeli setIntegrityCheck(false)
został ustawiony na zaznaczonym obiekcie- Jeden lub więcej kolumn jest wynikiem wycenionego wyrażenia
Jeśli którykolwiek z powyższych warunków jest prawdziwy, to wynikowy obiekt wiersza będzie miał rked jako tylko do odczytu, ponieważ Zend_Db nie może zagwarantować, że wszystkie kolumny w wynikach odwołują się do oryginalnej tabeli nadrzędnej wybranego obiektu. Dlatego każda próba wywołania update()
, save()
lub na obiekcie wiersza zakończy się niepowodzeniem.
Niektóre z tych informacji są dostępne w całym numerze Zend_Db_Table reference, gdzie w przypadku wyszukiwania integrity
można zobaczyć liczbę wystąpień, w których wiersze będą oznaczone jako tylko do odczytu.
możliwe literówka - Wierzę, że 'setIntegrityCheck (TRUE)' jest to, co masz na myśli, ponieważ zwykle ustawiamy ją na "FALSE", aby umożliwić połączenia. Chociaż mógłbym cofnąć kontekst. – RockyFord
To prawda, jeśli wyłączysz sprawdzanie integralności 'setIntegrityCheck (false)', wtedy wiersz jest oznaczony jako tylko do odczytu. Jeśli sprawdzanie integralności jest włączone i przechodzi, wtedy wiersz jest zmienny. – drew010
Dziękuję, że miałem to w głowie. – RockyFord
- 1. Kanał "tylko do odczytu" tylko do odczytu
- 2. Cały model jako tylko do odczytu
- 3. Logowanie do MVC (Zend Framework)
- 4. Zend Framework - plugin o nazwie nie został odnaleziony w rejestrze
- 5. Zend: Dwa obiekty, jeden wiersz
- 6. Parametr post nie został przekazany Zend Framework 2
- 7. Właściwości tylko do odczytu
- 8. Grupa Zend framework by
- 9. es6 importowanie jako tylko do odczytu zobacz zrozumienie
- 10. Tylko do odczytu obserwowalna kolekcja
- 11. Zend Framework 2 Przekierowanie
- 12. Zend Framework 2: podzapytania
- 13. zend framework 2 AuthenticationService
- 14. Zend Framework 2 LDAP
- 15. PHP Zend Framework Generator
- 16. Zend Framework: dane do wypełniania DB Zend Form rozwijanego elementu
- 17. Entity Framework 6 - jak przekonwertować ten wiersz na asynchroniczny?
- 18. Koherentny widok tylko do odczytu bazy danych
- 19. SQLite/PHP tylko do odczytu?
- 20. Czy mogę oznaczać pilot GIT jako tylko do odczytu?
- 21. Jak zapobiec otwieraniu plików git vimdiff jako tylko do odczytu?
- 22. Zend framework i ReCaptcha
- 23. Zend Framework Layout
- 24. Zend Framework HTTPS URL
- 25. Zend Framework JSON Output
- 26. zend framework 2 stałe
- 27. Wiersz StaleObjectstateException został zaktualizowany lub usunięty przez
- 28. CoreOS: tylko do odczytu systemu
- 29. tylko do odczytu atrybutów przełącz
- 30. Lista ciągów tylko do odczytu
Czy rekord został pobrany jako część zapytania, które używało sprzężenia, czy też wybrano wyłączenie flagi setIntegrityCheck? – drew010
prawdopodobnie ... dlaczego pytasz? Czy nie mogę dołączyć do innych danych w modelu, jeśli zamierzam go później zapisać? – Andrew
Jeśli tak, to zwracany obiekt wiersza zostanie oznaczony jako tylko do odczytu, ponieważ sprawdzanie integralności jest wyłączone i nie gwarantuje, że obiekt jest zgodny z obiektem tabeli, więc nie można go bezpośrednio zaktualizować, musisz utworzyć nowy obiekt klasy wiersza i skopiować do niego dane. – drew010