Wypowiedzi
-
Szukam pracy w PHP teamie :-)
- 22.04.2014, 09:23
-
Giix'a używam, Yii-toolbar zaraz zobaczę. Dzięki :)
-
Uff, TAK!!! WIelkie dzięki!
Jeszcze był błąd w f-cji search(), ale to już ogarnęłam.
To jak masz jeszcze pod ręką coś, co powinnam doczytać w tej sprawie, to chętnie łyknę, ale nie marnuj swojego czasu na szukanie specjalnie.
WIELKIE DZIĘKI!!!! -
Witaj!
Dzięki za odpowiedź, pochorowałam się trochę, dopiero dzisiaj mogłam do tego usiąść. Nadal niestety "pluje" błędami:
UserMessagesAppview and its behaviors do not have a method or closure named "getData".
Edit:
Przepraszam, widok był nieustawiony. Przy ustawieniu widoku mówi mi, że:
Fatal error: Function name must be a string in
Ten post został edytowany przez Autora dnia 05.12.13 o godzinie 12:56
'dataProvider' => $model()->search(),
-
Cześć, dzięki za odpowiedź.
Właśnie nie działa z automatu, chyba mam źle metodę search() zdefiniowaną, albo wcale, bo odpowiedź serwera:
CActiveDataProvider and its behaviors do not have a method or closure named "search".
W modelu search() jest:
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('id', $this->id, true);
$criteria->compare('user_messages_id', $this->user_messages_id, true);
$criteria->compare('customerId', $this->customerId, true);
$criteria->compare('showDate', $this->showDate, true);
$criteria->compare('readDate', $this->readDate, true);
$criteria->compare('messCode', $this->messCode, true);
$criteria->compare('messType', $this->messType, true);
$criteria->compare('messText', $this->messText, true);
$criteria->compare('CrDate', $this->CrDate, true);
$criteria->compare('forceRead', $this->forceRead);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
dataProvider dostarczany w taki sposób z kontrolera:
$criteria = new CDbCriteria;
$criteria->compare('customerId', Yii::app()->user->name, true);
$criteria->order = "readDate IS NOT NULL, readDate DESC, forceRead, CrDate";
$dataProvider = new CActiveDataProvider(
'UserMessagesAppview', array('criteria' => $criteria)
);
Pewnie gdzieś czegoś nie zaskoczyłam i po prostu nie wiem, jak to ustawić.
Z góry dzięki. -
Wielkie dzięki za pomoc!
Nie wiedziałam, że można napisać f-cję getPrimaryKey, wiele to ułatwia :)
Miałam w bazie przygotowany już jakiś widok, skorzystałam z niego, dająć potrzebne sortowania w CDbCriteria:
public function actionMessage() {
$criteria = new CDbCriteria;
$criteria->compare('customerId', Yii::app()->user->name, true);
$criteria->order = "readDate IS NOT NULL, readDate DESC, forceRead, CrDate";
$dataProvider = new CActiveDataProvider(
'UserMessagesAppview', array('criteria' => $criteria)
);
$this->render('messagesBox', array(
'model' => $dataProvider,
));
}
Jeśli mógłbyś mi jeszcze powiedzieć, jak dodać do grida wyszukiwanie, latałabym pod sufitem z radości :)
Tutaj SQL z widokiem.
A co do SQLa, to nie mój, muszę się do niego dopasować i tyle :(Ten post został edytowany przez Autora dnia 29.11.13 o godzinie 10:46 -
Cześć. Dziekuję za odpowiedź.
Struktura jest tutaj.
Kod akcji:
public function actionMessage() {
$rawData = UserMessagesAppview::model()->findAllByAttributes(array('customerId' => Yii::app()->user->name));
$dataProvider = new CArrayDataProvider($rawData, array(
'id' => 'userMessages',
'sort' => array(
'attributes' => array(
'id', 'user_messages_id', 'customerId', 'showDate', 'readDate', 'messCode', 'messType', 'messText', 'CrDate', 'forceRead',
),
),
'pagination' => array(
'pageSize' => 10,
),
));
$this->render('messagesBox', array(
'model' => $dataProvider,
));
}
Widok jest standardowy. -
Witajcie!
Od dłuższego czasu pbóruję wymyslić jak napisać grida, i nie mogę...
Mam w bazie 3 encje, które niestety nie są połączone relacjami ale relacje między nimi istnieją:
message, user, user_message
Potrzebuję wyświetlić w gridzie wiadomości przeznaczone dla konkretnego użytkownika,
posortowane w ten sposób, że na górze wyświetlam wiadomości wazne i nieczytane (message.important=true i user_message.readDate=NULL)
następnie nieważne nieczytane, a potem cała reszta sortowana datą utworzenia.
Dane do tego grida potrzebuję ze wszystkich trzech tabel, tak naprawdę i nie potrafię tego przeskoczyć.
Na podstawie widoku utworzonego w bazie, pobrałam właściwe wiadomości i przekazałam do Grida:
UserMessagesAppview::model()->findByAttributes(...);
ale w skutek tego w widoku dostaję jedną wiadomość, na dodatek w okna wyszukiwania nad gridem jest wpisana.
Proszę o pomoc. -
35 minut odpada na hostingu, bo kilkują po kilku
-
Wielkie dzięki za odpowiedż wykraczającą poza moje pytanie :) Przetestuję to sobie i przyswoję, bo pewnie jeszcze nie raz mi się ta wiedza przyda. W tej aplikacji jeszcze nie, bo nie planuję większych analiz plików, wystarczy zwykły http://pl74.plemiona.pl/map/conquer.txt żeby tylko sprawdzić w jakim rejonie ostatnio nastąpiło przesunięcie granic terytorium.
-
Dzięki :)
-
Witajcie!
Mam problem, z którym zmagam się od dłuższego czasu i nie bardzo wiem, gdzie szukać rozwiązania. Nie jestem MySQLowcem niestety..
Mam plik dostępny on-line: http://pl74.plemiona.pl/map/village.txt
Mam bazę danych, która taki plik może zaimportować i chcę uruchomic skrypt, który ten import zrobi automatycznie.
Jak to zrobić?
Rozbijam się o to, że polecenie: LOAD DATA LOCAL INFILE 'D:/map74/ally.txt' INTO TABLE tempally FIELDS TERMINATED BY ',';
Nie czyta mi danych z http.
Pozdrawiam i z góry dzięki za wyjaśnienie mi problemu. -
Ja chciałam sprawdzić jak to jest z tą optymalizacją w praktyce, a sam kod iteracyjny skomplikowany nie jest, więc nie było to problemem. :-)
Pozdrawiam i dobrego dnia :) -
Panowie, wielkie dzięki Wam obu!
Rozwiązanie iteracyjne testowałam sobie jakiś czas temu w php. Napisałam i.. nie działało, chociaż napisane poprawnie było. Rekordów tam jest koło miliona, więc puściłam sobie pętelkę na lokalnej maszynie, szła 8h, "trochę" za długo.
SQLa znam tylko podstawy i bardzo brakuje mi "insert into on key duplicate" i podobnych konstrukcji. Jeśli jesteście w stanie polecić mi jakiś zwarty kurs zaawansowanego sqla, to bradzo proszę.
Co do różnicy między insert i update to ogarniam, naprawdę. ;)Ten post został edytowany przez Autora dnia 16.09.13 o godzinie 00:13 -
Obeszłam problem w taki sposób, zapewne nieelegancko..
CREATE TABLE temptable (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`tag` varchar(200) NOT NULL,
`members` int(11) NOT NULL,
`villages` int(11) NOT NULL,
`points` int(11) NOT NULL,
`all_points` int(11) NOT NULL,
`rank` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MEMORY;
LOAD DATA LOCAL INFILE 'D:/yt/ally.txt' INTO TABLE temptable
FIELDS TERMINATED BY ',';
DROP TABLE ally;
RENAME TABLE temptable TO ally;
-
Witajcie!
Usiłuję zimportować dane z pliku txt do tabeli w bazie, a następnie updatować regularnie tabelę. Dane są z gry, więc dość dynamiczne. Część rekordów będzie znikać, część się pojawiać, pozostałe będą wymagać aktualizacji.
Wymodzić udało mi się tylko coś takiego:
CREATE TEMPORARY TABLE temptable (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`tag` varchar(200) NOT NULL,
`members` int(11) NOT NULL,
`villages` int(11) NOT NULL,
`points` int(11) NOT NULL,
`all_points` int(11) NOT NULL,
`rank` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MEMORY;
LOAD DATA LOCAL INFILE 'D:/yt/ally.txt' INTO TABLE temptable
FIELDS TERMINATED BY ',';
UPDATE ally JOIN temptable USING (id) SET ally.id = temptable.id;
DROP TEMPORARY TABLE temptable;
Oczywiście nie działa. Tabela ally jest pusta, podejrzewam, że UPDATE na pustej nie zadziała, jak jednak poradzić sobie z tym, żeby update działał zawsze, też kasując lub dodają rekordy? I co jest źle w tym zapytaniu?
Szukałam w sieci, nie znalazłam, dlatego pytam. -
Ewa P.:
I gwarowo też jeszcze funkcjonuje. Ja mogę tak mówić do swoich teściów lub do dziadków mojego męża. I jak do dziadków czasem tak powiem, tak do teściów wolę mamo i tato, lub tak, jak do mojej mamy: raz mamo, raz przez ty, jak wygodniej. Najważniejsze jest, żeby relacje układać ciepło, to i sposób zwracania się przestanie być problemem.
dawniej nie było z tym problemu, bo mówiło się per "wy". Zróbcie, weźcie. To nadal funkcjonuje chociażby w języku francuskim czy rosyjskim i sprawdza się doskonale. -
Jakby ktoś jeszcze zaglądał do tego tematu, to polecam jeszcze tą notatkę na temat sesji w Yii:
http://blog.poslinski.net/yii-mechanizm-sesji/ -
jak to połączyć z porównywarkami?
-
Dziękuję za odpowiedź.
Nie, nie znalazłam wcześniej rozwiązania, Twoje zadziałało po lekkiej modyfikacji:
public function getAuthorNames()
{
$authors = array();
// $model = Book::model()->findByPk($this->id);
foreach ($this->authors as $author)
{
$authors[] = $author->name . ' ' . $author->second_name;
}
return implode(', ', $authors);
}
Jeszcze tylko wyszukiwanie w widżecie, bo nie hula.