Hallo,
also mit SQL abfragen tu ich min in der Regel nicht schwer aber hier seh ich entweder den Wald vor lauter Bäumen nicht oder ich hab echt ein fettes Brett vor dem Kopf.
Die Daten stehen so in ein BLOB-Feld: a:3:{i:0;s:7:"soldout";i:1;s:9:"postponed";i:2;s:9 :"relocated";}
Meine Abfrage ist folgende:
PHP-Code:
$fields = array('published=?', 'pid IN('.implode(',',$calendars).')', '(fs_showoption NOT LIKE ? OR fs_showoption NOT LIKE ?)', 'startDate >= ?');
$values = array(1, '%'.serialize("cancelled").'%', '%'.serialize("postponed").'%', $now);
$objConcerts = CalendarEventsModel::findby($fields,$values,array('order' => 'startDate ASC', 'limit' => $model->cal_limit));
Das Ergebnis des SQl sieht so aus:
Code:
SELECT tl_calendar_events.* FROM tl_calendar_events WHERE tl_calendar_events.published=1 AND tl_calendar_events.pid IN(1) AND (fs_showoption NOT LIKE '%s:9:\"cancelled\";%' OR fs_showoption NOT LIKE '%s:9:\"postponed\";%') AND startDate >= 1601127251 ORDER BY startDate ASC LIMIT 0,4
Das ist falsch zwecks den Backslash, aber selbst wenn ich den entferne in der direkten Abfrage in der DB gibt er mir kein Ergebnis obwohl da nur ein Event ist was diese Optionen enthält, also müsste es mir mein Testevent was 2021 ist ausgeben.
Also entweder ein riesen Denkfehler oder ich sollte die Finger davon lassen
Schönes Wochenende noch
EDIT: hat sich erleidgt das Feld darf nicht NULL sein. Die Abfrage klappt dann auch ohne serialize
Lesezeichen