Yii Framework Forum: Результат с togehter() и без разный - баг или фишка? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Результат с togehter() и без разный - баг или фишка? Rate Topic: -----

#1 User is offline   duke1999 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 01-March 09
  • Location:Russia

Posted 22 May 2009 - 03:56 AM

Чисто теоретически - все relations и условия не пишу, всё равно никто разбираться не будет :)
Просто у меня $Model::model()->with($option)->together()->findAll(); и $Model::model()->with($option)->findAll();
выдают разные данные - такое возможно?
0

#2 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 22 May 2009 - 09:30 AM

а расскажите что за together, то в api найти немогу
0

#3 User is offline   duke1999 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 01-March 09
  • Location:Russia

Posted 22 May 2009 - 09:41 AM

Quote

link=topic=2276.msg12617#msg12617 date=1243002643]

а расскажите что за together, то в api найти немогу


http://www.yiiframew...together-detail
0

#4 User is offline   duke1999 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 01-March 09
  • Location:Russia

Posted 22 May 2009 - 09:43 AM

Quote

link=topic=2276.msg12617#msg12617 date=1243002643]

а расскажите что за together, то в api найти немогу


Из Гайда:

Quote

Начиная с версии 1.0.2, можно принудительно выполнить реляционный запрос через один SQL-запрос. Для этого просто добавьте вызов together() после with(). Например,



$posts=Post::model()->with(

    'author.profile',

    'author.posts',

    'categories')->together()->findAll();



Запрос выше будет выполнен с использованием одного SQL-запроса. Без вызова together потребуется два SQL-запроса: один связывает таблицы Post, User и Profile, а другой - таблицы User и Post.

0

#5 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 22 May 2009 - 03:38 PM

Quote

link=topic=2276.msg12617#msg12617 date=1243002643]

а расскажите что за together, то в api найти немогу


together заставляет yii выполнять несколько запросов в одном через join
0

#6 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 22 May 2009 - 03:41 PM

на счет разных результатов - включи логирование и посмотри какие он тебе запросы делает в одном и в другом случае.. скорее всего из-за джоина у тебя теряются какие-то записи, а может и наоборот - дублирование или лишние тянуться..
возможно ошибка в условиях... надо смотреть что ты там навоял :)
0

#7 User is offline   creocoder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 198
  • Joined: 09-March 09
  • Location:*.php

Posted 08 June 2009 - 07:48 PM

Вообще это нормальная ситуация. Возникает если пользоваться dinamic relational query options, которые помимо связей из relations() указываются в with().
Пример:

Foo::model()->with(array(
'posts'=>array('order'=>'??.createTime ASC'),
'profile',
))->findAll();

Так вот, при использовании together(), который делает из нескольких запросов один, иногда возникает побочный эффект, который можно использовать для построения очень сложных запросов. Вообще по идее together() не может по определению "правильно" работать с "dinamic relational query options" как вы этого ожидаете. Но то как он это делает можно использовать например для реализации сложнейших моделей данных типа EAV(или модель Тенцера) нативными для Yii средствами.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users