getSlots() as $slot) { if ($first) { $joinedSlots = $slot; $first = false; } else { $joinedSlots .= ',' . $slot; } } // We execute the insertion $this->connect->insert(Utils::table('slot'), [ 'poll_id' => $poll_id, 'title' => $choice->getName(), 'moments' => $joinedSlots ]); } } /** * @param $poll_id * @throws \Doctrine\DBAL\DBALException * @return array */ public function listByPollId($poll_id) { $prepared = $this->prepare('SELECT * FROM ' . Utils::table('slot') . ' WHERE poll_id = ? ORDER BY id'); $prepared->execute([$poll_id]); return $prepared->fetchAll(); } /** * Find the slot into poll for a given datetime. * * @param $poll_id int The ID of the poll * @param $datetime int The datetime of the slot * @throws \Doctrine\DBAL\DBALException * @return mixed Object The slot found, or null */ function findByPollIdAndDatetime($poll_id, $datetime) { $prepared = $this->prepare('SELECT * FROM ' . Utils::table('slot') . ' WHERE poll_id = ? AND SUBSTRING_INDEX(title, \'@\', 1) = ?'); $prepared->execute([$poll_id, $datetime]); $slot = $prepared->fetch(); $prepared->closeCursor(); return $slot; } /** * Insert a new slot into a given poll. * * @param $poll_id int The ID of the poll * @param $title mixed The title of the slot * @param $moments mixed|null The moments joined with "," * @return bool true if action succeeded */ function insert($poll_id, $title, $moments) { return $this->connect->insert(Utils::table('slot'), ['poll_id' => $poll_id, 'title' => $title, 'moments' => $moments]) > 0; } /** * Update a slot into a poll. * * @param $poll_id int The ID of the poll * @param $datetime int The datetime of the slot to update * @param $newMoments mixed The new moments * @return bool|null true if action succeeded. */ function update($poll_id, $datetime, $newMoments) { return $this->connect->update(Utils::table('slot'), ['moments' => $newMoments], ['poll_id' => $poll_id, 'title' => $datetime]) > 0; } /** * Delete a entire slot from a poll. * * @param $poll_id int The ID of the poll * @param $datetime mixed The datetime of the slot * @throws \Doctrine\DBAL\DBALException * @return bool */ public function deleteByDateTime($poll_id, $datetime) { return $this->connect->delete(Utils::table('slot'), ['poll_id' => $poll_id, 'title' => $datetime]) > 0; } /** * @param $poll_id * @throws \Doctrine\DBAL\DBALException * @return bool */ public function deleteByPollId($poll_id) { return $this->connect->delete(Utils::table('slot'), ['poll_id' => $poll_id]) > 0; } }