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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: связи между таблицами.
СообщениеДобавлено: 19 ноя 2012, 13:04 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
доброго времени суток.

со связями в орм все понятно, а как поступить если я не использую орм? )
все таблицы в базе у меня связаны так или иначе. есть таблица main в нее сводятся все данные из доп. таблиц-справочников.
вот форма, в ней поля: дата, заказчик, производитель и т.д. Данные поля заказчик и производителя - выпадающие списки. Данные для них берутся из таблиц-справочников. достать из не проблема и все работает. вот так у меня это организованно (выпадающий для заказчиков, таблица customer. Для остальных выпадающих списков по аналогии):
Код:
               <select class="input" type=text name=customer_id OnChange="byselect(this, 'self')" style="width:450px;">
                        <?php foreach($customers as $customer): ?>
                    <?php echo '<option value='.$customer['customer_id'].'>'.$customer['fio'].'</option>'; ?>//выпадающий список с именами заказчиков
                        <?php endforeach; ?>
                </select>


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

вопрос: как обработать и вывести правильно эти данные? чтобы выводились не айдишники (т.к. таблицы между собой связанны именно ими, естественно :) ), а выводились данные привязанные к ид.

т.е. сейчас у меня это выглядит так:
Код:
<?php echo $zakaz['customer_id']; ?>// вижу только ид заказчика

а надо что-то вроде вот этого:
Код:
<?php echo $zakaz['customer_id']->$zakaz['fio']; ?>// должно выводиться имя заказчика


я понимаю, что надо в модель добавить запрос на выборку тех данных, которые мне нужны, что в контроллере это как-то надо обработать... вот какие мысли меня посетили, пока я писала этот коротюсенький вопрос))) :
модель:
Код:
public function get_cus()
    {
        $query = DB::select()
                ->from('customer');
       
        $result = $query->execute();
        return $result[0];
    }

контроллер:
Код:
 $customer = Model::factory('Printd')->get_cus();            
           
            $content = View::factory('dogovor') //вид формы
                        ->bind('zakaz', $zakaz) //обработка осн. данных
                        ->bind('customer', $customer) //обработка данных заказчика
                    ;



ПЫ.СЫ. спасибо всем кто отвечает на мои вопросы, спасибо админу за уроки, и вообще) :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 21 ноя 2012, 10:32 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
ребята!!! без вас с такой задачей не справиться((( помогите пожалуйста


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 21 ноя 2012, 12:41 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
осознала что делала всё не правильно...
невнимательно читала урок с квери билдером. был там один момент про связные таблицы...
прошу прощения :oops:

но, вот всё равно ничего не получается :cry:
вот в модели делаю запрос на выборку, где надо вытащить данные заказчика, которые привязаны к id заказа.
Код:
       public function get_cus()
    {
        $query = DB::select('customer.fio')
                ->from('customer')
                ->join('main')
                ->on('customer.customer_id', '=', 'main.customer_id');
        $result = $query->execute();
        return $result[0];
    }


как правильно обработать полученные данные из запроса чтобы выводились данные заказчика, прикреплённые к определённому заказу.
делаю пока только та:
Код:
$customer = Model::factory('Printd')->get_cus(); 


в результате выводится, естеССтвенно, данные заказчика по первому id.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 21 ноя 2012, 16:42 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Естественно выводится первая попавшаяся строка, Вы ведь в запрос не передаете id заказчика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 21 ноя 2012, 18:08 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
а как правильно его передать ? второй день никак не могу сообразить(((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 21 ноя 2012, 20:49 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Код:
->where('tablename.id', '=', $id)

Про это почитать можно всё в том же уроке с квери билдером.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 22 ноя 2012, 11:15 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
мдаааа, ребята. Это клиника. И ведь раз 100 по этой статье гуляла... спасибо за наводку, qed


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 22 ноя 2012, 18:21 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
что-то я совсем ничего не понимаю... не получается(
делаю как в уроке ничего не получается. делаю как мне надумалось тоже пустота. помогите осознать что не так делаю, пожаааалуйста.
вот модель, где запрос в табл. заказчиков, которые привязаны к главной таблице:
Код:
public function print_cus($customer_id)
    {
        $customer_id = (int) $customer_id;
       
        $query = DB::select()
                ->from('customer')
                ->join('main')
                ->on('customer.customer_id', '=', 'main.customer_id')
                ->where('customer.customer_id', '=', $customer_id);
        $result = $query->execute();
        return $result[0];
    }


вот так я их обрабатываю в контроллере:
Код:
   
            $customer_id = (int) $this->request->param('id');
            $content = View::factory('dogovor')
                        ->bind('$customers', $customers);
           
            $customers = Model::factory('$customer_id')->print_cus($customer_id);
           
            $this->template->content = $content;
       


вывожу по старинке
Код:
<ins><i>Заказчик:</i></ins> 
                <?php echo $zakaz['customer_id']; ?> //это ид заказчика который записался в главную таблицу при заполнении формы. Обрабатывается, воводится
                 
                    <?php foreach($customers as $customer): ?>//а вот здесь по идее должны выводиться данные соответствующие ид который указан сверху
                    <?php echo $customer['fio']; ?>
                  <?php endforeach; ?>   


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 22 ноя 2012, 20:55 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
->bind('$customers', $customers);
Model::factory('$customer_id')
Для начала разберитесь с этими строками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: связи между таблицами.
СообщениеДобавлено: 23 ноя 2012, 11:31 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
ой, ё((( это отчаянный копипаст и замыленный глаз + моя фирменная невнимательность. но суть к сожалению не меняется.
заблудилась в 4х строчках кода. ппц вообще.


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

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


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

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


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

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