Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 03 июн 2024, 12:03

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 17 июл 2012, 02:16 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
Ты не знаешь моей структуры БД...
Цитата:
Почему ты решил что Многие ко многим, как пришел к такому выводу ?
Цитата:
У меня на данном этапе связи нет, т.к. считаю что здесь она не нужна, не вижу смысла, а при выборке буду использовать многие-ко-многим.

Я, думаю, мы разговариваем немного на разных языках)

Почему ты называешь incats_video промежуточной таблицей (pivot table "по науке") не знаю.
Я не телепат, мысли читать не могу и структуру БД тоже. Нарисуй ее тогда и пример приведи.
Хотя, возможно, я и не так все понял)
Если код работает как задумывалось - хорошо и все правильно.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 09:36 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Тогда могу предположить такую структкру (раз уж ты не написал ее)

Категории-подкатегории:
Код:
Мультфильмы
    Мультсериалы
    Советские мультфильмы
    Зарубежные мультфильмы
Фильмы
    Зарубежное Кино
    Советские фильмы
    Наше кино
    Индийские фильмы
Сериалы
    Зарубежные сериалы
    Русские сериалы

Жанры:
Код:
Боевик
Триллер
Комедия
Драма
Фантастика
Приключения

Фильмы:
Код:
Пила
Матрица
Игра престолов
Мертвый космос

Пока 3 таблицы.
Фильм не может быть в разных категориях (одновременно Мультфильмом и Зарубежным кином, например) Т.е. Категории-Фильмы - связь один-ко-многим
Фильм может иметь несколько жанров и к жанру относится много фильмов Т.е. Жанры-Фильмы - связь многие-ко-многим (нужна промежуточная таблица)
Уже 4 таблицы.

Ты можешь нажать на жанр и получить все фильмы этого жанра (независимо от категории в которой он находится)
Ты можешь нажать на категорию и получить все фильмы этой категории (жанр не имеет значение, будут разные жанры из нажатой категории)
Я себе это так представляю. Наверное от этого нужно и плясать.

Вот здесь http://uakino.net/video, например, категории и фильмы. По жанру не выберешь.
А вот здесь http://kino-dom.tv/, например, только жанры и фильмы (по категории не выберешь, их нет) (как я в начале понял ты это хотел сделать, только я отнес категории к роли жанров - поэтому и решил, что связь многие-ко-многим)
Я так понимаю будут категории и жанры (две менюхи из которых можно выбирать как нравится)

Если бы ты написал так в начале, можно было бы разбираться)
Ну теперь вроде все есть со всеми примерами. Структуру выбирай сам. Как сделать средствами коханы я писал выше.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 13:40 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
AmberLEX писал(а):
Тогда могу предположить такую структкру (раз уж ты не написал ее)

Категории-подкатегории:
Код:
Мультфильмы
    Мультсериалы
    Советские мультфильмы
    Зарубежные мультфильмы
Фильмы
    Зарубежное Кино
    Советские фильмы
    Наше кино
    Индийские фильмы
Сериалы
    Зарубежные сериалы
    Русские сериалы

Жанры:
Код:
Боевик
Триллер
Комедия
Драма
Фантастика
Приключения

Фильмы:
Код:
Пила
Матрица
Игра престолов
Мертвый космос

Пока 3 таблицы.
Фильм не может быть в разных категориях (одновременно Мультфильмом и Зарубежным кином, например) Т.е. Категории-Фильмы - связь один-ко-многим
Фильм может иметь несколько жанров и к жанру относится много фильмов Т.е. Жанры-Фильмы - связь многие-ко-многим (нужна промежуточная таблица)
Уже 4 таблицы.

Ты можешь нажать на жанр и получить все фильмы этого жанра (независимо от категории в которой он находится)
Ты можешь нажать на категорию и получить все фильмы этой категории (жанр не имеет значение, будут разные жанры из нажатой категории)
Я себе это так представляю. Наверное от этого нужно и плясать.

Вот здесь http://uakino.net/video, например, категории и фильмы. По жанру не выберешь.
А вот здесь http://kino-dom.tv/, например, только жанры и фильмы (по категории не выберешь, их нет) (как я в начале понял ты это хотел сделать, только я отнес категории к роли жанров - поэтому и решил, что связь многие-ко-многим)
Я так понимаю будут категории и жанры (две менюхи из которых можно выбирать как нравится)

Если бы ты написал так в начале, можно было бы разбираться)
Ну теперь вроде все есть со всеми примерами. Структуру выбирай сам. Как сделать средствами коханы я писал выше.

Опять друг друга не поняли :lol: Сейчас попробую лучше разьяснить
categories
- id --- 2
- name --- Комедии
incats
- id --- 1
- category_id --- 2(связь с таблицей categories многие к одному)
- name --- Семейные комедии
incats_video(храняться соответсвующие поджанры к фильмам, таблица связывающая опр. фильм с поджанрами.Если у фильма 5 поджанров, то в этой таблице для него будет 5 записей)
- id --- 1
- video_id --- 3 (связь с таблицей video)
- incat_id --- 1 (связь с таблицей incats)
video
- id --- 1
- name --- Человек паук
- original_name --- Spider-Man
- year --- 2007
- time --- 100 мин.
- description --- описание
- image --- изображение
Сейчас хоть немного понятней написал ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 17:28 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Я нихрена не понял)
Чем твоя задача отличается от двух реально работающих сайтов, которые я привел в пример?
Скажи одно: Чего в них нет, что нужно тебе? (что нужно тебе получить на выходе я так и не понял)

Не нужна мне твоя реализация внутренней структуры, я почти уверен, что это твой велосипед, который нафиг не нужен.
Я привел пример двух реальных сайтов с категориями и жанрами и примеры как это может быть реализовано. Можно совместить.

Что у тебя будет на фронтенде, в конце концов? Категории, жанры, видео. что будет видеть пользователь?
Я почти уверен, что все, кто прочтет эту тему на форуме, поймут, что я хотел сказать. То что написал ты - нет.

Если не будет нормального внятного ответа, я дискуссию дальше не продолжаю. Ты говоришь на своем языке, который понятен наверное, только тебе.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 20:58 
Не в сети
Бывалый

Зарегистрирован: 21 май 2012, 20:54
Сообщения: 81
Мне кажется речь идет о правильном составлении sql-запроса с обьединением нескольких таблиц.

_________________
Меньше кода -> меньше ошибок


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 21:40 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
AmberLEX писал(а):
Я нихрена не понял)
Чем твоя задача отличается от двух реально работающих сайтов, которые я привел в пример?
Скажи одно: Чего в них нет, что нужно тебе? (что нужно тебе получить на выходе я так и не понял)

Не нужна мне твоя реализация внутренней структуры, я почти уверен, что это твой велосипед, который нафиг не нужен.
Я привел пример двух реальных сайтов с категориями и жанрами и примеры как это может быть реализовано. Можно совместить.

Что у тебя будет на фронтенде, в конце концов? Категории, жанры, видео. что будет видеть пользователь?
Я почти уверен, что все, кто прочтет эту тему на форуме, поймут, что я хотел сказать. То что написал ты - нет.

Если не будет нормального внятного ответа, я дискуссию дальше не продолжаю. Ты говоришь на своем языке, который понятен наверное, только тебе.

Попробую сам с этим разобраться, спасибо за попытки мне помочь :)
В этом коде у меня два раза используется метод save(). Один сохраняет данные в одну таблицу, другой в другую. Как сделать, что если олин из save() прошел не успешно, то и другой не сохраняется ?
Код:
    public function action_add() {
        //Получаем все поджанры
        $incats = ORM::factory('incat')->find_all();
       
        if (isset($_POST['submit'])) {
            $data = Arr::extract($_POST, array('name', 'original_name', 'year', 'time', 'description', 'image', 'url'));
            $video = ORM::factory('video');
            $video->values($data);
           
            $cat = Arr::extract($_POST, array('incats'));
            $video_incats = ORM::factory('cat');
               
            try {
                $video->save();
                $last_id = $video->id;

                foreach ($cat['incats'] as $incat_id) {
                    $video_incats->values(array('video_id' => $last_id, 'incat_id' => $incat_id));
                    $video_incats->save();
                    $video_incats->clear();
                }         
                $this->request->redirect('admin/news');
            }
            catch (ORM_Validation_Exception $e) {
                $errors = $e->errors('validation');
            }
        }
       
        $content = View::factory('index/video/v_video_add')
                ->bind('errors', $errors)
                ->bind('data', $data)
                ->bind('incats', $incats);

        // Вывод в шаблон
        $this->template->page_title .= ':: Добавить';
        $this->template->block_center = array($content);
    }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2012, 03:12 
Не в сети
Бывалый

Зарегистрирован: 12 фев 2012, 21:19
Сообщения: 32
AmberLEX писал(а):
На счет post, да. Думаю "по феншую" так проверять правильно: if ($this->request->method() == HTTP_Request::POST) {...}
Зачем $last_id, если она в одном месте используется? Можно сразу туда вписать.
И, наверное, категории и подкатегории нужно объединить в одну таблицу с полем parent_id, если правильно понял мысль.
Какая связь таблиц каткгории-видео, многие-ко-многим? Если да, то нужно в модели это прописать и сделать не в цикле, там явно что-то не то)


А внутри виджета как проверять ? У меня $this->request->method() выдает GET. И еще, какая разница между if($param) и if(!empty($param)) ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2012, 09:29 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
А внутри виджета как проверять
Думаю про это спрашивали: Request::current()->method() == HTTP_Request::POST
Цитата:
И еще, какая разница между if($param) и if(!empty($param))
http://php.net/manual/ru/function.empty.php - ищите разницу

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2012, 15:09 
Не в сети
Бывалый

Зарегистрирован: 12 фев 2012, 21:19
Сообщения: 32
Там написано про isset и empty. Я знаю в чем их отличие. А я спрашиваю empty и вообще без ничего.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 июл 2012, 10:50 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Вроде как тема по Kohana, а не основам php и управляющим конструкциям.
Вот здесь читаем как работает "if" - http://www.php.net/manual/ru/control-structures.if.php и там же во втором абзаце 2 ссылки - их тоже читать. Там нужно вникать.
Из-за того, что php слаботипизированный язык возникает столько вольностей и непонимания и нужно курить)

И если влом вникать в мануал, то можно помыслить логически.
В вашем случае "без ничего!" - означает, что в этой переменной было до условия или была ли она вообще до условия - не так ли?
Вот и пишем список переменных, которые empty воспринимаются как пустые (http://php.net/manual/ru/function.empty.php) и учитывая это http://www.php.net/manual/ru/language.t ... an.casting, и немного добавим своих для интереса
Код:
<?php 
error_reporting
(E_ALL E_STRICT);

foo($var);

$var = "";      foo($var);
$var = 0;       foo($var);
$var = 0.0;     foo($var);
$var = "0";     foo($var);
$var = NULL;    foo($var);
$var = FALSE;   foo($var);
$var = array(); foo($var);

$var = trim(" "); foo($var);
$var = -1;        foo($var);
$var = 1;         foo($var);
$var = " ";       foo($var);

function foo($var)
{
    echo ' - информания о переменной<br>' . var_dump($var);

    if ($var)
        echo 'True';
    else
        echo 
'False';

    if ( ! empty($var))
        echo ' = True';
    else
        echo 
' = False';
    
    echo 
'<br><br>';
}
 
Там правда еще свойства объекта могут быть и тип resource
А то кохану изучаете, а такой код даже для себя и интереса и наглядно самому увидеть, лень написать было.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group