Примеры приложений на Kohana

Вурдалак

Продвинутый новичок
Через триггеры, кажись, будет грустно. Триггер на TRUNCATE вроде бы не повесить, для каждой удаляемой записи свой UPDATE — верно?

Для реализации паттерна тогда по идее надо save(), delete(), delete_all() перегрузить? Колись как на Фёдоре сделано.
 

zerkms

TDD infected
Команда форума
На федоре триггеры

[sql]BEGIN
UPDATE
`feeds`
SET
`subscribers` = (SELECT
COUNT(*)
FROM
`subscriptions`
WHERE
`feed_id` = NEW.`feed_id`)
WHERE
`id` = NEW.`feed_id`;
END
[/sql]

-~{}~ 08.08.10 13:23:

Для реализации паттерна тогда по идее надо save(), delete(), delete_all() перегрузить?
ага, методы-нотификации удобнее всего будет дёргать как раз из озвученных методов.
 

Вурдалак

Продвинутый новичок
Делаю ЛС, есть таблица:
[sql]CREATE TABLE IF NOT EXISTS user_pm (
user_id int(10) unsigned NOT NULL,
pm_id int(10) unsigned NOT NULL,
folder_id mediumint(9) NOT NULL,
PRIMARY KEY (user_id,pm_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;[/sql]
Можно как-то сделать в ORM отношение «один ко многим» при такой нестандартной таблице (через through)? То есть требуется ещё добавлять условие с folder_id.

-~{}~ 15.08.10 05:33:

Так прокатывает:
PHP:
$this->user->pm->where('folder_id', '=', 1)->find_all()
Правда без добавления имени таблицы/алиаса, естественно.

-~{}~ 22.09.10 13:55:

А есть для Kohana 3 аналог Zend_Navigation? Я код по диагонали посмотрел и мне показалось, что слишком геморрно будет таскать его, проще переписать.

Нужно, в принципе, только для breadcrumbs.

-~{}~ 03.10.10 23:21:

zerkms, какой из cache driver используешь? Там из стандартного есть APC, Memcache, Xcache, Eaccelerator.

-~{}~ 03.10.10 23:26:

У меня на сервере половина времени исполнения тратится на поиск файлов. :) Надо бы в один файл слить все часто используемые классы.

-~{}~ 04.10.10 00:40:

Сразу попутно вопрос: стоит ли хранить там сессии? Смущает не будут ли они пропадать, ведь кеш не обязан там хранится постоянно. Хочу новый класс для сессии написать.
 

zerkms

TDD infected
Команда форума
zerkms, какой из cache driver используешь?
До последнего времени использовал самописный для memcached. Сейчас плавно переезжаю на изкоробочный, пока на файлах.

Сразу попутно вопрос: стоит ли хранить там сессии? Смущает не будут ли они пропадать, ведь кеш не обязан там хранится постоянно. Хочу новый класс для сессии написать.
в мемкэше вполне можно: данные могут быть удалены в случае запроса (не твой случай), истечения таймаута (тут неважно где хранить - GC таймауту и в африке GC), вытеснения данных другими, более живыми данными - тут уже надо следить и думать, перезагрузки - без комментариев.
если в состоянии решить две последних "проблемы" - почему бы и нет.
 

Вурдалак

Продвинутый новичок
В одном из контроллеров было два одноимённых action'а:
Код:
Fatal error: Class declarations may not be nested in xxx\system\classes\date.php on line 3
Какой-то странный баг. Будет свободное время — покопаюсь. У меня ещё это вылезало (именно с классом Date), когда произошла какая-то фатальная ошибка и при десериализации данных сессии всё падало с этой же ошибкой. Я чуть голову не сломал тогда, т.к. там, в сериализованных данных, был только объект Model_User и пара integer'ов. Нигде никакого Date я не видел. Кончилось тем, что тупо удалил сессию.

-~{}~ 23.10.10 04:21:

А в этом случае просто исправил ошибку в имени action'а. Ошибка исчезла.

-~{}~ 23.10.10 19:51:

Да и так, к слову,
PHP:
$query->execute()->as_array('id')
возвращает массив типа
Код:
Array
(
    [1] => Array
        (
            [id] => 1
        )

    [2] => Array
        (
            [id] => 2
        )

    [42] => Array
        (
            [id] => 42
        )
)
Я может чего-то не понимаю, что нах## это нужно? Причём получения обычного массива вида
Код:
Array ( [0] => 1 [1] => 2 [2] => 42 )
нет, приходится через
PHP:
array_values($query->execute()->as_array('id', 'id'))
доставать.
 

Вурдалак

Продвинутый новичок
Не догадался я сразу в код глянуть. Там есть недокументированная возможность вида
PHP:
$query->execute()->as_array(NULL, 'id')
Вот, блин...
 
Сверху