Выберем для этого первый метод, если не получилось первым, то нужно попробовать вторым, иначе попробовать третьим, но в случае, если все методы не принесли успешных результатов, то необходимо обратиться к Базе Данных и там найти последнее успешное значение.Ваш код не соответствует этому описанию. В приведённой цепочке if-else выполнение какого-либо метода зависит не от результата предыдущего метода, а от набора неких внешних условий. Для цепочки можно использовать
result = tryMethod1() || tryMethod2() || ... || getFromDB();
SELECT `b`.`id`, `b`.`title`, `b`.`description`, `b`.`public`,
(SELECT COUNT(*) FROM `likes` WHERE `boycottid` = :boycot_id) AS `likes`,
(SELECT COUNT(*) FROM `dislikes` WHERE `boycottid` = :boycot_id) AS `dislikes`,
(SELECT COUNT(*) FROM `subscriptions` WHERE `boycottid` = :boycot_id) AS `subscriptions`
FROM (
SELECT `id`, `title`, `description`, `public` FROM `boycotts` WHERE `id` = :boycot_id
) AS `b`