2017-04-08 3 views
0

Ich habe zwei Tabellen:Fullcalendar Ereignisse Daten aus mehrdimensionalen Array

booking_table

+---------+-------+-----+--------+-----------+ 
| bookID | start | end | title | menuId | 
+---------+-------+-----+--------+-----------+ 
|1  | xx | xx | 1  | 11  | 
|2  | xx | xx | 2  | 12  | 
|3  | xx | xx | 1  | 13  | 
|4  | xx | xx | 3  | 14  | 
+---------+-------+-----+--------+-----------+ 

menu_table

+---------+-------+-----------+-----------+ 
|  ID | name | img  | tMenuId | 
+---------+-------+-----------+-----------+ 
| 1  | xx | 1.jpg | 11  | 
| 2  | xx | 2.jpg | 11  | 
| 3  | xx | 3.jpg | 12  | 
| 4  | xx | 4.jpg | 12  | 
+---------+-------+-----------+-----------+ 

Ich fullcalendar.js und codeigniter verwenden. Ich habe es mit Join-Tabellen versucht:

$sql = "SELECT * FROM booking_table JOIN menu_table ON booking_table.menuId = menu_table.tMenuId WHERE booking.start BETWEEN ? AND ? ORDER BY booking.start ASC"; 

return $this->db->query($sql, array($_GET['start'], $_GET['end']))->result(); 

aber funktioniert nicht wie erwartet. Ich erhalte:

+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
| bookID | start | end | title | menuId |  ID | name | img  | tMenuId | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
|1  | xx | xx | 1  | 11  | 1  | xx | 1.jpg | 11  | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
|1  | xx | xx | 1  | 11  | 2  | xx | 2.jpg | 11  | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 

Ich Reihe bekommen 1 von booking_table zweimal. Was ich brauche, ist:

+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
| bookID | start | end | title | menuId |  ID | name | img  | tMenuId | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
|1  | xx | xx | 1  | 11  | 1  | xx | 1.jpg | 11  | 
|   |  |  |  |   | 2  | xx | 2.jpg | 11  | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 
|2  | xx | xx | 2  | 12  | 3  | xx | 3.jpg | 12  | 
|   |  |  |  |   | 4  | xx | 4.jpg | 12  | 
+---------+-------+-----+--------+-----------+---------+-------+-----------+-----------+ 

Ich divs in modal wie diese bevölkern:

$('#time').val(data.event ? data.event.start : ''); 

usw.

Meine Frage ist:

Wie kann ich fullcalendar Ereignisdaten aus multidimensionalem Array?

+0

Was funktioniert nicht wie erwartet? Und können Sie ein Beispiel (aus den Daten, die Sie zeigen) von dem, wie es aussehen soll, anbieten? –

+0

Ich habe den Beitrag aktualisiert, ich hoffe, es ist jetzt klarer. Im Grunde bekomme ich multidimensionales Array, für ein Element aus 'booking_table' Tabelle, bekomme ich mehrere Elemente von 'menu_table'. – Pecooou

Antwort

1

Sie können group_concat verwenden, um die Werte mehrerer Zeilen zu einem Feld zusammenzufassen. Wenn Sie Aliase für Ihre Tabellen verwenden, kann die Abfrage außerdem lesbarer werden.

$sql = "SELECT 
    b.`bookID`, 
    b.`start`, 
    b.`end`, 
    b.`title`, 
    b.`menuId`, 
    m.`ID`, 
    GROUP_CONCAT(m.`name`) as `names`, 
    GROUP_CONCAT(m.`img`) as `images`, 
    m.`tMeniId` 
FROM booking_table b 
JOIN menu_table m 
    ON b.menuId = b.tMenuId 
GROUP BY a.bookID, b.menuId 
WHERE b.start BETWEEN ? AND ? 
ORDER BY b.start ASC"; 
+0

GROUP_CONCAT ist sehr nützlich, ich habe es bisher nicht verwendet, obwohl einige Arbeit an der Konvertierung in die entsprechenden Array (s) erfordern. Danke Kumpel – Pecooou

Verwandte Themen