выборка из таблиц симфони доктрина

lina11

Новичок
Необходимо выбрать поля таблицы tab1 и поле sifr из таблицы tab2.Схема такая:
config/doctrine/schema.yml
PHP:
---
bazaTab1:
actAs:
Timestampable: ~
columns:
date: 
type: date 
code_id: 
type: integer
notnull: true 
... .... .......
relations:
bazatab1:
local: code_id
foreign: id
type: one 
foreignType: many

bazaTab2:
actAs:
Timestampable: ~
columns:
name:
type: string(32)
notnull: true
shifr:
type: int(4)
notnull: true
1) В методе setup() класса BasebazaTab1.class.php:
HTML
PHP:
public function setUp()
{
parent::setUp();
$this->hasOne('bazaTab2', array(
'local' => 'code_id',
'foreign' => 'id'));
$timestampable0 = new Doctrine_Template_Timestampable();
$this->actAs($timestampable0);
}
2) В методе setup() класса BasebazaTab2.class.php:
HTML
PHP:
public function setUp()
{
parent::setUp();
$this->hasMany('bazaTab1', array(
'local' => 'id',
'foreign' => 'code_id'));

$timestampable0 = new Doctrine_Template_Timestampable();
$this->actAs($timestampable0);
}
Сам запрос на симфони:
PHP:
$q = Doctrine_Query::create() 
  ->from('bazaTab1 o, o.bazaTab2 o2') 
  ->where('o.code_id=?','o2.id') 
  ->Andwhere('o.date = ?', '2010-12-22') ;
$this->result=$q->execute();
выдает данные только из 1-й таблицы Tab1.
в ЧЕМ ДЕЛО?
 

lina11

Новичок
Поняла,что не в курсе.Только в таком случае цепляются...
 

Духовность™

Продвинутый новичок
нет. я просто не люблю доктрину. та сложность, с которой приходится сталкиваться не оправдывает её использование.
 

AmdY

Пью пиво
Команда форума
Духовность™
какие например трудности? допустим данный пост вызван просто незнакомством с мануалом, который очень подробный с кучей примеров.
 

lina11

Новичок
Я так делала,подключала tab2 через join.Раскритиковали меня и сказали,что доктрина сама джоинит.Оно так и есть.
Вот LOG:
execute : SELECT o.id AS o__id, o.date AS o__date,....... o.code_id AS o__code_id, o.created_at AS o__created_at, o.updated_at AS o__updated_at, o2.id AS o2__id, o2.name AS o2__name, o2.shifr AS o2__shifr, o2.created_at AS o2__created_at, o2.updated_at AS o2__updated_at FROM baza_Tab1 o LEFT JOIN baza_Tab2 o2 ON o.code_id = o2.id WHERE (o.date = ?) - (2010-12-22)
 

lina11

Новичок
И еще дамп:
PHP:
array(1) { [0]=> array(13) { ["id"]=> string(1) "1" ["date"]=> string(10) "2010-12-22" ....
 ["created_at"]=> string(19) "2011-03-28 17:32:18" ["updated_at"]=> string(19) "2011-03-28 17:32:18" ["oudt1Code"]=> array(1) { [0]=> array(5) { ["id"]=> string(1) "1" ["name"]=> string(10) "Pr" ["shifr"]=> string(4) "5124" ["created_at"]=> string(19) "2011-03-28 17:32:18" ["updated_at"]=> string(19) "2011-03-28 17:32:18" } } } }
Данные выбраны верно.Но выводятся только данные из 1-й таблицы Tab1.мне еще нужен столбец shifr из 2-й таблицыTab2.Сообщение такое:
Notice: Undefined index: shifr_code in Z:\home\sf_sandbox\lib\vendor\symfony\lib\escaper\sfOutputEscaperArrayDecorator.class.php on line 119
:
 

Вурдалак

Продвинутый новичок
Есть несколько простых правил, позволяющих значительно повысить продуктивность общения на форуме. Одно из них: копируй дампы из HTML-кода, а не прямо из браузера, потому что теряется форматирование. Дамп в одну строчку никто смотреть не будет.

Собственно, почему не $row['bazaTab2']['shifr']?
 

lina11

Новичок
Спасибо огромное!Я грешила на контроллер и запрос в нем,а ,оказывается надо было в шаблоне вывести значение из таблицы Tab2 таким способом,как Вы предложили.А из первой таблицы Tab1 все выводится как раньше я делала.
PHP:
   echo format_date($value['date'],'MM:dd:');
.

Спасибо!!!
 

lina11

Новичок
Вурдалак .извините и еще вопрос:Я здесь в запросе вставляла в условии WHERE конкретную дату.А мне надо выбрать ее из календаря,например.Знаний мало по симфони.Я все делаю в модуле.Вопрос:мне в этом же экшене подключить календарь и выбрать дату?Спасибо.
 

Вурдалак

Продвинутый новичок
Это не по symfony вопрос, а по HTML/JavaScript. Использование такого фреймворка всё-таки предполагает хорошее знание основ. Передавай каким-то образом дату (GET/POST), потом доставай всё из $request->getParameter('date').
 

lina11

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