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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: ORM связи и значения
СообщениеДобавлено: 21 апр 2013, 15:30 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
Доброго времени суток.
Не знаю как грамотно реализовать следующую ситуация, надеюсь на подсказку.
Нужно по мимо связи как то записать еще и значение - актуально для последовательности в меню.
Я могу для каждого вида меню добавить колонку в нужную таблицу и писать туда порядковый номер, но это как то не кошерно.
Есть другие способы?
С уважением.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 21 апр 2013, 16:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Подсказка:

Код:
<?php

    
/** @var array Table columns */
    
protected $_table_columns =  array(
        
'id'     => array( 'type' => 'int' ), // id
        
'title'  => array( 'type' =>  'string' ), // заголовок
        
'name'   => array( 'type' =>  'string' ), // имя
        
'descp'  => array( 'type' =>  'string' ), // описание
        
'image'  => array( 'type' =>  'string' ), // картинка
        
'url'    => array( 'type' =>  'string' ), // ссылка
        
'params' => array( 'type' =>  'string' ), // дополнительные параметры
        
'active' => array( 'type' => 'int' ), // активен не активен
        
'pid'    => array( 'type' => 'int' ), // родительский id
        
'lft'    => array( 'type' => 'int' ), // вес рассчитывается между lft и  rgt
        
'rgt'    => array( 'type' => 'int' ), // вес рассчитывается между lft и  rgt 
        
'lvl'    => array( 'type' => 'int' ), // уровень
        
'scp'    => array( 'type' => 'int' ), // область видимости
    
); 


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 21 апр 2013, 19:48 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
Сознаюсь, намека не понял.
У меня примерна такая же структура таблицы, но зачем все колонки описывать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 23 апр 2013, 08:09 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
...еще бы подсказок...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 23 апр 2013, 12:59 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
А что конкретно не понятно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 23 апр 2013, 13:37 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
Вы в модели описали, как я понимаю, все колонки своей таблицы.
Но это меня ни как не наталкивает на мысль, дающую мне ответ на вопрос из первого поста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 24 апр 2013, 08:29 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
Что бы не выглядеть лентяем, я приведу костыль который сейчас использую:
Модель:
Код:
<?php defined('SYSPATH') or die('No direct script access.');
class Model_Menus {
    public function setMenu($array,$alias,$type){
        $data['alias']=$alias; $data['type']=$type;
        foreach($array as $key=>$value){
            if(isset($value['check'])){
                $data['position']=$key; $data['value']=$value['value'];
                $menus = ORM::factory('Menu')
                        ->where('alias','=',$data['alias'])
                        //->and_where('type','=',$data['type'])
                        ->and_where('position','=',$data['position'])
                        ->find()
                        ;
                $menus->values($data); $menus->save();
            }
        }
    }
    public function getMenu($alias,$type){
        $menu=array();
        $arrays = ORM::factory('Menu')->where('alias','=',$alias)->find_all()->as_array();
        foreach($arrays as $array){
            $menuData=$array->as_array();
            $menu[$menuData['position']]=$menuData['value'];
        }
        return $menu;
    }
}

Контроллер:
Код:
$menus = ORM::factory('Menu')->order_by('value','ASC');
$topmenus = $menus->where('position','=','top')->find_all()->as_array();
$topmenu=array();
foreach($topmenus as $k=>$v){
    $topmenu[$k]['position'] = $v->value;
    $topmenu[$k]['name'] = ORM::factory('Page')->where('alias','=',$v->alias)->find()->name;//
        if($k==0){
            $topmenu[$k]['url'] = '/';
            $this->homepage = ORM::factory('Page')->where('alias','=',$v->alias)->find()->as_array();
        }else{$topmenu[$k]['url'] = '/'.$v->type.'/'.$v->alias;}
    }
$this->template->topmenus = $topmenu;

Работает, но что то душа не на месте...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 25 апр 2013, 12:35 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Я никак не пойму ты хочешь завести alias для колонок таблиц? Так не пойдет?
Код:
protected $_table_columns =  array(
    'id'     => array( 'type' => 'int', 'alias' => 'alias_id' ), // id

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 25 апр 2013, 13:01 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
to WinterSilence
У меня есть страницы и менюшки. Связь многие ко многим.
Как настроить и работать знаю, но мне нужно по мимо связи добавить еще порядковый номер страницы для меню.
Дак вот, исходя из первого поста, можно ли записать, допустим в pages_menus, кроме связных данных, то есть ID, еще какое-нибудь значение, третьей колонкой так сказать?
Как выход, повторюсь, я видел добавление для каждого меню колонку в таблицу pages
Но это выглядело не кашэрно, сегодня меню одно завтра два, после завтра хз.
Поэтому я изобрел свой велик, что бы показать свое решение, он катается, но как то страшноват.
Неужели не у кого порядок в меню не реализован?
Предполагаю что с ORM только велик использовать, но хочется увидеть и другие решения, кто как изобретает, если не секрет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM связи и значения
СообщениеДобавлено: 25 апр 2013, 16:26 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
теперь понял, вообще по логике конечно нужно добавить поле в pages_menus, в pdo проблем с этим точно нет, насчет kohana orm-pdo пока не знаю, попробую вечерком - заинтересовало)

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


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

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


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

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


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

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