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

Query Builder - примеры запросов
http://forum.kohanaframework.su/viewtopic.php?f=36&t=135
Страница 2 из 3

Автор:  prickle [ 27 мар 2013, 16:14 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

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

вот например

Тут всё работает как надо:

Код:
$lines = DB::select('line.*', 'master.master', 'made.*', 'apparat.*', 'check.*')
         ->from('line')
                   ->join('apparat')
                   ->on('line.apparat_id', '=', 'apparat.apparat_id')
                        ->join('made')
                        ->on('made.made_id', '=', 'line.made_id')
                        ->join('master')
                        ->on('master.master_id', '=', 'line.master_id')
                        ->join('check')
                        ->on('check.check_id', '=', 'line.check_id')
         ->order_by('date_in', 'DESC')
         ->execute();


а здесь, тоже самое, но как только добавляю связь по таблицам msters и/или check - результат на выводе пустая страница:

Код:
$zakazs = DB::select('main.*', 'master.master', 'made.*', 'apparat.*', 'check.*')
                                ->from('main')
                                    ->join('customer')
                                    ->on('main.customer_id', '=', 'customer.customer_id')
                                    ->join('master')
                                    ->on('main.master_id', '=', 'master.master_id')
                                    ->join('apparat')
                                    ->on('apparat.apparat_id', '=', 'main.apparat_id')
                                    ->join('made')
                                    ->on('made.made_id', '=', 'main.made_id')
                                    ->join('check')
                                    ->on('check.check_id', '=', 'main.check_id')
                                ->where('conclusion', 'is not', NULL)
                                ->execute();


помогите осознать в чём здесь полтергейст

Автор:  merlin [ 27 мар 2013, 23:42 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

А ошибки не выводит, просто белая страница?

Автор:  prickle [ 28 мар 2013, 10:57 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

всё есть, ссылки, картинки, подписи, а именно в том месте где должны выводиться данные с бд - пусто. как только я убираю связь с таблицами masters и check, запрос работает правильно и всё выводится.

вот дамп в момент когда связь с глючными таблицами создана:

Код:
object Database_MySQL_Result(7) {
    protected _internal_row => integer 0
    protected _query => string(419) "SELECT `main`.*, `master`.`master`, `made`.*, `apparat`.*, `customer`.*
FROM `main`
JOIN `customer` ON (`main`.`customer_id` = `customer`.`customer_id`)
JOIN `master` ON (`main`.`master_id` = `master`.`master_id`)
JOIN `apparat` ON (`apparat`.`apparat_id` = `main`.`apparat_id`)
JOIN `made` ON (`made`.`made_id` = `main`.`made_id`)
JOIN `check` ON (`check`.`check_id` = `main`.`check_id`)
WHERE `conclusion` IS NOT NULL"
    protected _result => resource(mysql result)
    protected _total_rows => integer 0
    protected _current_row => integer 0
    protected _as_object => bool FALSE
    protected _object_params => NULL
}


вот как это выглядит

Вложения:
1.jpg
1.jpg [ 97.56 КБ | Просмотров: 7144 ]

Автор:  prickle [ 28 мар 2013, 11:00 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

и что самое интересное. у меня есть ещё одна таблица, где используются все эти связи. и ВСЁ работает, а именно с главной таблицей - проблемы.

Автор:  qed [ 28 мар 2013, 18:13 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

prickle писал(а):
и что самое интересное. у меня есть ещё одна таблица, где используются все эти связи. и ВСЁ работает, а именно с главной таблицей - проблемы.

Проверьте, есть ли в таблице master данные, связанные по master_id с другой таблицей.

Автор:  prickle [ 29 мар 2013, 10:43 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

проверила. лишних связей нет.
заметила одну особенность: если в базу ручка вбить id мастера или второй таблицы с которой у меня глюк, то все "глюки" пропадают. как так-то?(((

а если остаётся поле с мастерами NULL или 0 - то опять все не работает...

Автор:  prickle [ 29 мар 2013, 11:14 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

я уже пробовала и заново все связи переписывать, и базу заново создавала (благо маленький объём )) )

Автор:  prickle [ 29 мар 2013, 11:41 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

приходится юлить. вместо null-ов пришлось делать значения по умолчанию. т.е. в мастерах пришлось сделать "универсальную" запись типа
Код:
"master_id = 08; master = ФИО; adres = адрес; tells = телефоны; дата рождения = 0000-00-00"

а в второй глючной таблице проще - у меня всего там две позиции
Код:
"chech_id = 01; check = да"

и
Код:
"chech_id = 02; check = нет"

по умолчанию выбирается "нет".
в принципе это меня устраивает, но хочется понять почему приходится так поступать....

Автор:  qed [ 29 мар 2013, 16:37 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

Я ничего не пойму)
Судя по запросам вы связываете таблицу master с таблицей main по полю master_id, значит в таблице main должно быть поле master_id с заполненными значениями(не NULL), либо вам нужно использовать LEFT JOIN, это уже зависит от задачи.

Автор:  prickle [ 30 мар 2013, 12:35 ]
Заголовок сообщения:  Re: Query Builder - примеры запросов

поняли всё правильно, именно всё так и работает. у меня 2 таблицы основные, которые собрают в себе данные из справочников, злополучная main и line. так вот в таблице line, сделанно всё аналогично как в main, все ключи, связи, запросы на выборку идентичные. с ней всё хорошо. а вот с main вот таки "коники" получаются.

в принципе из положения я вышла, но, блин, я в шоке))))))

СПАСИБО, что помогали :)

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