Yii Framework Forum: [SOLVED] Problem z kasowaniem danych z tabeli MANY_MANY - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[SOLVED] Problem z kasowaniem danych z tabeli MANY_MANY Rate Topic: -----

#1 User is offline   saprot 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 23-March 10

Posted 23 March 2010 - 09:06 AM

Witam Wszystkich!

Mam problem z kasowaniem danych z tabeli, w której opisane są relacje. Mam jedną tabelę Group, drugą tabelę User, i tabelę ich relacji GroupUser.

Relacje w modelu Group:

return array(
'uzytkownicy'=>array(self::MANY_MANY, 'User', 'GroupUser(id_group, id_user)'),
'uzytkownicyCount'=>array(self::STAT, 'User', 'GroupUser(id_group, id_user)'),
);

Relacje w tabeli User:

return array(
'grupy'=>array(self::MANY_MANY, 'Group', 'GroupUser(id_user, id_group)'),
'grupyCount'=>array(self::STAT, 'Group', 'GroupUser(id_user, id_group)'),
);

Wszystko pięknie działa do czasu, gdy chcę modyfikować przypisania użytkownika do grup.
Dodawanie działa dobrze:
Yii::app()->db->createCommand("INSERT INTO GroupUser(id_group, id_user) VALUES($grupa_id, $element_id)")->execute();

Ale usuwanie już nie:
Yii::app()->db->createCommand("DELETE FROM GroupUser WHERE id_group = $grupa_id AND id_user = $element_id")->execute();

Nie ma żadnych błędów, niby operacja wykonana jest OK, a i tak wpis z tabeli nie jest usuwany.
Co robię źle?

Używam najnowszej wersji Yii (1.1.1).

Pozdrawiam serdecznie i bardzo proszę o pomoc :)
0

#2 User is offline   qwerty 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 294
  • Joined: 20-November 08

Posted 23 March 2010 - 10:43 AM

Dlaczego nie używasz AR do wstawiania i kasowania danych?
0

#3 User is offline   saprot 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 23-March 10

Posted 23 March 2010 - 11:12 AM

View Postqwerty, on 23 March 2010 - 10:43 AM, said:

Dlaczego nie używasz AR do wstawiania i kasowania danych?


Bez różnicy, przy AR też nie działa :)
0

#4 User is offline   qwerty 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 294
  • Joined: 20-November 08

Posted 23 March 2010 - 11:56 AM

A może coś więcej. Jakieś błędy? Włącz logowanie (najlepiej www) i zobacz jakie są wykonywane zapytania sql. Będziesz miał czarno na białym.
0

#5 User is offline   saprot 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 23-March 10

Posted 23 March 2010 - 12:25 PM

View Postqwerty, on 23 March 2010 - 11:56 AM, said:

A może coś więcej. Jakieś błędy? Włącz logowanie (najlepiej www) i zobacz jakie są wykonywane zapytania sql. Będziesz miał czarno na białym.


Żadnych błędów... logowanie mam włączone z parametrami trace, info, error, warning, tak więc nic się nie prześlizgnie. Zapytanie SQL odczytanie z loga wygląda następująco:

DELETE FROM GroupUser WHERE id_group = 8 AND id_user = 1

czyli całkowicie poprawnie IMHO.
0

#6 User is offline   aztech 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 206
  • Joined: 12-December 08
  • Location:Poland

Posted 24 March 2010 - 03:12 AM

A jak masz zdefiniowane klucze obce w tabeli? Może po prostu nie masz ustawionego onDelete = cascade ?
I'm not complete idiot... some parts are missing!
0

#7 User is offline   saprot 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 23-March 10

Posted 24 March 2010 - 03:31 AM

Ale cascade to nie jest po to, aby np. przy okazji kasowania grupy kasować wszystkich użytkowników z nią powiązanych? A mi chodzi tylko u usunięcie przypisania, czyli z tabeli GroupUser kasujemy wpis, i tylko to.
0

#8 User is offline   aztech 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 206
  • Joined: 12-December 08
  • Location:Poland

Posted 24 March 2010 - 05:29 AM

Sorry, za szybko przeczytałem posta. Faktycznie usuwasz z tabelki której pola referują do innych tabel.
Może to głupie pytanie/rada, ale czy próbowałeś na szybko wygenerować nową aplikację, potem yiic modele a następnie sprawdzić czy z tej aplikacji działa.
A co dzieje się jak korzystasz z query zamiast execute? execute() przewidziana jest dla zapytań nie zwracających żadnych wyników a usuwanie zwraca ilość usuniętych wierszy. Moze tutaj tkwi problem?
I'm not complete idiot... some parts are missing!
0

#9 User is offline   saprot 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 23-March 10

Posted 24 March 2010 - 01:42 PM

View Postaztech, on 24 March 2010 - 05:29 AM, said:

Sorry, za szybko przeczytałem posta. Faktycznie usuwasz z tabelki której pola referują do innych tabel.
Może to głupie pytanie/rada, ale czy próbowałeś na szybko wygenerować nową aplikację, potem yiic modele a następnie sprawdzić czy z tej aplikacji działa.
A co dzieje się jak korzystasz z query zamiast execute? execute() przewidziana jest dla zapytań nie zwracających żadnych wyników a usuwanie zwraca ilość usuniętych wierszy. Moze tutaj tkwi problem?


Wygenerowanie nowej aplikacji pomogło mi, bo tam wszystko działało dobrze. Niestety, ciała dalem ja ;P Okazało się, że zapomniałem jednego znaku '=' i przy sprawdzaniu komendy wysyłanej przez ajaksowe zapytanie
if($komenda == true) powinno być if($komenda === true), przez to za każdym razem wpis mi się kasował i od razu dodawał :)

Dzięki wszystkim za pomoc i poświęcony czas!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users