Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Как сделать лучше action(Я новичек, нужен совет) http://forum.kohanaframework.su/viewtopic.php?f=31&t=247 |
Страница 1 из 3 |
Автор: | poter [ 16 июл 2012, 01:20 ] |
Заголовок сообщения: | Как сделать лучше action(Я новичек, нужен совет) |
Вот собственно экшен, кохану изучаю около 4 дней, так что толком еще ничего не знаю. Что тут можно улучшить ? Что сейчас плохо сделано ?В дванном примере как я понимаю нужно сдеать транзакцию, но как ее делать в кохане я не знаю =( . Кому не не лень, пожалуйста помогите =) Код:
|
Автор: | pimpys [ 16 июл 2012, 04:56 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
Со всего что я начитал могу сказать одно $_POST['submit'] всегда иссет:) Не знаю может мну тут какашками закидают, но яб тебе посоветовал проверять либо так: !empty($_POST) Либо так: Request method == post empty естесно быстрее писать. |
Автор: | AmberLEX [ 16 июл 2012, 08:07 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
На счет post, да. Думаю "по феншую" так проверять правильно: if ($this->request->method() == HTTP_Request::POST) {...} Зачем $last_id, если она в одном месте используется? Можно сразу туда вписать. И, наверное, категории и подкатегории нужно объединить в одну таблицу с полем parent_id, если правильно понял мысль. Какая связь таблиц каткгории-видео, многие-ко-многим? Если да, то нужно в модели это прописать и сделать не в цикле, там явно что-то не то) |
Автор: | poter [ 16 июл 2012, 12:09 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
AmberLEX писал(а): На счет post, да. Думаю "по феншую" так проверять правильно: if ($this->request->method() == HTTP_Request::POST) {...} Зачем $last_id, если она в одном месте используется? Можно сразу туда вписать. И, наверное, категории и подкатегории нужно объединить в одну таблицу с полем parent_id, если правильно понял мысль. Какая связь таблиц каткгории-видео, многие-ко-многим? Если да, то нужно в модели это прописать и сделать не в цикле, там явно что-то не то) У меня на данном этапе связи нет, т.к. считаю что здесь она не нужна, не вижу смысла, а при выборке буду использовать многие-ко-многим.-Если да, то нужно в модели это прописать и сделать не в цикле, там явно что-то не то) , а как сделать, можно пример пожалуйста ? |
Автор: | AmberLEX [ 16 июл 2012, 13:43 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
Связь или есть или нет. Нужно как-то следить за целостностью данных при заполнении и выборке. Пример вот: Код:
|
Автор: | poter [ 16 июл 2012, 13:49 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
AmberLEX писал(а): Связь или есть или нет. Нужно как-то следить за целостностью данных при заполнении и выборке. Пример вот: Код:
Спасибо. Если да, то нужно в модели это прописать и сделать не в цикле. У меня через цикл добавляются в БД новые поля, может быть сразу 20 подкатегорий, вот и создатся для данного фильма 20 полей в таблице |
Автор: | AmberLEX [ 16 июл 2012, 13:54 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
Я твое не понимать) Каких полей? |
Автор: | poter [ 16 июл 2012, 17:31 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
AmberLEX писал(а): Я твое не понимать) Каких полей? не то написал, 20 записей будет добавлено в БД. В зависисти от того сколько пользователь выберет подктегорий. Если он выбрал 5, то 5 будет добавлено в БД |
Автор: | AmberLEX [ 16 июл 2012, 18:41 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
Цитата: У меня на данном этапе связи нет, т.к. считаю что здесь она не нужна, не вижу смысла, а при выборке буду использовать многие-ко-многим. Я не очень понимаю эту фразу и какой вы там смысл видите или не видите.Есть стандартная задача (у вас как я понимаю она стандартная) - есть стандартное решение. У kohana есть средства для ее решения. А какой велосипед вы там строите я примерно догадываюсь, но он не нужен скорее всего. У вас есть категории, есть то что в них добавляется - пока все. Если сделать многие-ко-многим, нужна промежуточная таблица. (постом выше cat2art) Потом при добавлении чего-то в категорию, вы добавляете саму запись в одну таблицу и запись о связи в промежуточную. Выглядит это примерно так: Код:
И все. Метод add(), который это делает смотрим в модуле ORM. Там уже есть цикл с $query->values, который строит запрос и потом выполняется 1 раз: $query->execute($this->_db); Код:
Итого: то, что вам нужно, будет выглядеть примерно так: Код:
Итого 3 таблицы, много-ко-многим и мало кода) з.ы. (к тому, "Что тут можно улучшить") $data = Arr::extract($_POST, array('name', 'original_name', 'year', 'time', 'description', 'image', 'url')), а потом $video->values($data); можно не писать, а сделать проще $video->values($_POST) или $video->values($_POST, array('name', 'original_name', 'year', 'time', 'description', 'image', 'url')) Во view View::factory('index/video/v_video_add')->set('obj', $obj); В шаблоне к переменной обращаться: $obj->name Гы) Мне бы так кто рассказывал, когда я сам это все ковырял)) |
Автор: | poter [ 17 июл 2012, 01:12 ] |
Заголовок сообщения: | Re: Как сделать лучше action(Я новичек, нужен совет) |
AmberLEX писал(а): Цитата: У меня на данном этапе связи нет, т.к. считаю что здесь она не нужна, не вижу смысла, а при выборке буду использовать многие-ко-многим. Я не очень понимаю эту фразу и какой вы там смысл видите или не видите.Есть стандартная задача (у вас как я понимаю она стандартная) - есть стандартное решение. У kohana есть средства для ее решения. А какой велосипед вы там строите я примерно догадываюсь, но он не нужен скорее всего. У вас есть категории, есть то что в них добавляется - пока все. Если сделать многие-ко-многим, нужна промежуточная таблица. (постом выше cat2art) Потом при добавлении чего-то в категорию, вы добавляете саму запись в одну таблицу и запись о связи в промежуточную. Выглядит это примерно так: Код:
И все. Метод add(), который это делает смотрим в модуле ORM. Там уже есть цикл с $query->values, который строит запрос и потом выполняется 1 раз: $query->execute($this->_db); Код:
Итого: то, что вам нужно, будет выглядеть примерно так: Код:
Итого 3 таблицы, много-ко-многим и мало кода) з.ы. (к тому, "Что тут можно улучшить") $data = Arr::extract($_POST, array('name', 'original_name', 'year', 'time', 'description', 'image', 'url')), а потом $video->values($data); можно не писать, а сделать проще $video->values($_POST) или $video->values($_POST, array('name', 'original_name', 'year', 'time', 'description', 'image', 'url')) Во view View::factory('index/video/v_video_add')->set('obj', $obj); В шаблоне к переменной обращаться: $obj->name Гы) Мне бы так кто рассказывал, когда я сам это все ковырял)) Ты не знаешь моей структуры БД... categories - Категории incats - Подкатегории, имеется ссылка на категории(связь много ко одному) incats_video - Промежуточная таблица, в которой хранить храниться жанр к соответствующему фильму video - Фильмы Принцип работы при добавлении в БД такой: вся инфа идет в таблицу видео, а подкатегории в таблицу incats_video. Связи между ними нету вроде у меня. А если бы существовала, то Один ко многим !!!Одному фильму может принадлежать множество подкатегорий,но не наоборот. Почему ты решил что Многие ко многим, как пришел к такому выводу ? обьясни пожалуйста , хочется самому разобраться |
Страница 1 из 3 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |