Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

связи между таблицами.
http://forum.kohanaframework.su/viewtopic.php?f=33&t=470
Страница 1 из 2

Автор:  prickle [ 19 ноя 2012, 13:04 ]
Заголовок сообщения:  связи между таблицами.

доброго времени суток.

со связями в орм все понятно, а как поступить если я не использую орм? )
все таблицы в базе у меня связаны так или иначе. есть таблица 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) //обработка данных заказчика
                    ;



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

Автор:  prickle [ 21 ноя 2012, 10:32 ]
Заголовок сообщения:  Re: связи между таблицами.

ребята!!! без вас с такой задачей не справиться((( помогите пожалуйста

Автор:  prickle [ 21 ноя 2012, 12:41 ]
Заголовок сообщения:  Re: связи между таблицами.

осознала что делала всё не правильно...
невнимательно читала урок с квери билдером. был там один момент про связные таблицы...
прошу прощения :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.

Автор:  mamahtehok [ 21 ноя 2012, 16:42 ]
Заголовок сообщения:  Re: связи между таблицами.

Естественно выводится первая попавшаяся строка, Вы ведь в запрос не передаете id заказчика.

Автор:  prickle [ 21 ноя 2012, 18:08 ]
Заголовок сообщения:  Re: связи между таблицами.

а как правильно его передать ? второй день никак не могу сообразить(((

Автор:  qed [ 21 ноя 2012, 20:49 ]
Заголовок сообщения:  Re: связи между таблицами.

Код:
->where('tablename.id', '=', $id)

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

Автор:  prickle [ 22 ноя 2012, 11:15 ]
Заголовок сообщения:  Re: связи между таблицами.

мдаааа, ребята. Это клиника. И ведь раз 100 по этой статье гуляла... спасибо за наводку, qed

Автор:  prickle [ 22 ноя 2012, 18:21 ]
Заголовок сообщения:  Re: связи между таблицами.

что-то я совсем ничего не понимаю... не получается(
делаю как в уроке ничего не получается. делаю как мне надумалось тоже пустота. помогите осознать что не так делаю, пожаааалуйста.
вот модель, где запрос в табл. заказчиков, которые привязаны к главной таблице:
Код:
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; ?>   

Автор:  qed [ 22 ноя 2012, 20:55 ]
Заголовок сообщения:  Re: связи между таблицами.

->bind('$customers', $customers);
Model::factory('$customer_id')
Для начала разберитесь с этими строками.

Автор:  prickle [ 23 ноя 2012, 11:31 ]
Заголовок сообщения:  Re: связи между таблицами.

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

Страница 1 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/