gruppiert Ergebnis gefiltert Ich arbeite an CakePHP 3.4erhalten durch Zählung nach Datum in cakephp 3
ich eine Anwendung am Bau, die API-Schlüssel verwendet. Ein Schlüssel ist auf 100 Anrufe pro Tag begrenzt, daher verwende ich mehrere Schlüssel und möchte diese durchlaufen.
In meinem Controller, ich rufe eine Funktion des Modells API
$api_key = $this->CustomApi->getKey();
if (!$api_key) {
$this->Flash->error(__('API key not found'));
} else {
...
}
Im Modell zu erhalten CustomApi
ich getKey()
Funktion schreiben will, die Api Schlüsselzahl, dessen Aufruf des Tages finden, ist weniger als 100.
Spalten der Tabelle custom_api
sind id
, api_key
und Anrufe werden in api_calls
Tabelle, deren Spalten aufgezeichnet sind id
, user_id
, custom_api_id
, created
Jedes Mal, wenn die Benutzerzugriffsfunktion die API benötigt, wird in der Tabelle api_calls
ein Datensatz mit dem Zeitpunkt, zu dem der Anruf getätigt wurde, und dem Primärschlüssel von custom_api erstellt.
Meine Frage ist, wie Api Schlüssel aus CustomApi
Modell, dessen Anruf zählt, sind weniger als 100 für diesen Tag
Edit 2 erhalten (dh heute.): Mein Versuch
$key = $this
->find()
->select(['CustomApi.id', 'CustomApi.api_key'])
->where(['CustomApi' => /* count is less than 100 */])
->leftJoinWith('ApiCalls', function ($q) {
return $q->where(['ApiCalls.created' => date('Y-m-d')]);
})
->group('CustomApi.id');
Wie zähle ich in where
?
Linke Join mit 'ApiCalls', wo' created' in den Grenzen von heute ist, Gruppe 'CustomApi' durch seinen Primärschlüssel, und wählen nur die' CustomApi's mit einer Anzahl von 'ApiCalls's kleiner als 100. – ndm
ok, versuche, was du gesagt hast –
Hallo ndm, bitte check 'edit 2'. Ist es richtig gegen das, was du gesagt hast? Wie man in 'wo' zählt. Ich habe versucht zu googeln, aber nichts gefunden. –