Google Groups Home
Help | Sign in
Bug?
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  9 messages - Collapse all
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
Alex  
View profile
 More options 14 May, 19:10
From: Alex <outroa...@gmail.com>
Date: Wed, 14 May 2008 15:10:42 -0300
Local: Wed 14 May 2008 19:10
Subject: Bug?

 $query = Doctrine_Query::create()->from('CommentItem
c')->leftJoin('c.sfGuardUser u')->leftJoin('c.VoteComment vc with vc.user_id
= '.$this->getUser()->getId());
    }

    $treeObject = $commentTable->getTree();
    $treeObject->setBaseQuery($query);

    echo $treeObject->getBaseQuery()->getSqlQuery();

Output is

"SELECT c.id AS c__id, c.lft AS c__lft, c.rgt AS c__rgt, c.level AS
c__level, c.root_id AS c__root_id FROM comments c LEFT JOIN sf_guard_user s
ON c.user_id = s.id LEFT JOIN votes v ON c.id = v.comment_id WHERE (v.type =
2 OR v.type IS NULL)"

Doctrine seems to be discarding my last leftJoin's with condition. Is this a
bug or am I doing something wrong?
--

- Alex


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jonathan Wage  
View profile
(1 user)  More options 14 May, 19:13
From: "Jonathan Wage" <jonw...@gmail.com>
Date: Wed, 14 May 2008 13:13:25 -0500
Local: Wed 14 May 2008 19:13
Subject: Re: [doctrine-user] Bug?

Try capitalized WITH? Also I would use tokens in your query. ? instead of
directly concatenating it in to the DQL query.

- Jon

--
Jonathan Wage
http://www.jwage.com
http://www.centresource.com

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alex  
View profile
 More options 14 May, 19:15
From: Alex <outroa...@gmail.com>
Date: Wed, 14 May 2008 15:15:28 -0300
Local: Wed 14 May 2008 19:15
Subject: Re: [doctrine-user] Re: Bug?

 Bingo! That worked. All DQL commands must be uppercased? What's the
advantage of using the tokens?

--

- Alex


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jonathan Wage  
View profile
(1 user)  More options 14 May, 19:18
From: "Jonathan Wage" <jonw...@gmail.com>
Date: Wed, 14 May 2008 13:18:16 -0500
Local: Wed 14 May 2008 19:18
Subject: Re: [doctrine-user] Re: Bug?

It is good practice. You should always use them so that all values are
prepared. In this case it doesn't matter as much since the value isn't
necessarily user input.

- Jon

--
Jonathan Wage
http://www.jwage.com
http://www.centresource.com

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alex  
View profile
 More options 14 May, 19:24
From: Alex <outroa...@gmail.com>
Date: Wed, 14 May 2008 15:24:11 -0300
Local: Wed 14 May 2008 19:24
Subject: Re: [doctrine-user] Re: Bug?

One more question. When must ->select() be added to a Doctrine_Query object?
I've noticed that if I select from more than one table Doctrine doesn't
select columns from the joined tables. If I have ->from('Table t') , it
selects t.* . But if I add ->innerJoin('Table2 t2'), it doesn't select t2.*.

Couldn't find anything about it in the manual.

Thanks for your help Jon!

- alex

--

- Alex


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jonathan Wage  
View profile
 More options 14 May, 20:09
From: "Jonathan Wage" <jonw...@gmail.com>
Date: Wed, 14 May 2008 14:09:08 -0500
Local: Wed 14 May 2008 20:09
Subject: Re: [doctrine-user] Re: Bug?

Hmm. Are you sure about that? If you don't specify a select() in 1.0 it will
default to select all columns across all tables.

- Jon

--
Jonathan Wage
http://www.jwage.com
http://www.centresource.com

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alex  
View profile
 More options 14 May, 20:14
From: Alex <outroa...@gmail.com>
Date: Wed, 14 May 2008 16:14:58 -0300
Local: Wed 14 May 2008 20:14
Subject: Re: [doctrine-user] Re: Bug?

    $query = Doctrine_Query::create()->select('c.*, u.*,
vc.*')->from('CommentItem c')->leftJoin('c.sfGuardUser u');
    if ($this->getUser()->isAuthenticated())
    {
      $query->leftJoin('c.VoteComment vc WITH vc.user_id =
'.$this->getUser()->getId());
    }

Gives me

SELECT c.id AS c__id, c.user_id AS c__user_id, c.body AS c__body,
c.votes_for_cache AS c__votes_for_cache, c.votes_against_cache AS
c__votes_against_cache, c.created_at AS c__created_at, c.updated_at AS
c__updated_at, c.root_id AS c__root_id, c.lft AS c__lft, c.rgt AS c__rgt,
c.level AS c__level, s.id AS s__id, s.username AS s__username, s.algorithm
AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.last_login
AS s__last_login, s.is_active AS s__is_active, s.is_super_admin AS
s__is_super_admin, s.created_at AS s__created_at, s.updated_at AS
s__updated_at, v.id AS v__id, v.user_id AS v__user_id, v.vote_type_id AS
v__vote_type_id, v.type AS v__type, v.item_id AS v__item_id, v.comment_id AS
v__comment_id, v.created_at AS v__created_at FROM comments c LEFT JOIN
sf_guard_user s ON c.user_id = s.id LEFT JOIN votes v ON c.id = v.comment_id
AND v.user_id = 1 WHERE (v.type = 2 OR v.type IS NULL)

    $query = Doctrine_Query::create()->from('CommentItem
c')->leftJoin('c.sfGuardUser u');
    if ($this->getUser()->isAuthenticated())
    {
      $query->leftJoin('c.VoteComment vc WITH vc.user_id =
'.$this->getUser()->getId());
    }

Gives me

SELECT c.id AS c__id, c.lft AS c__lft, c.rgt AS c__rgt, c.level AS c__level,
c.root_id AS c__root_id FROM comments c LEFT JOIN sf_guard_user s ON
c.user_id = s.id LEFT JOIN votes v ON c.id = v.comment_id AND v.user_id = 1
WHERE (v.type = 2 OR v.type IS NULL)

I'm using $treeObject->setBaseQuery($query);
echo $treeObject->getBaseQuery()->getSqlQuery();

Could the treeObject be altering default Doctrine behavior?

--

- Alex


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jonathan Wage  
View profile
 More options 16 May, 20:01
From: "Jonathan Wage" <jonw...@gmail.com>
Date: Fri, 16 May 2008 14:01:03 -0500
Local: Fri 16 May 2008 20:01
Subject: Re: [doctrine-user] Re: Bug?

It is possible. Can you create a ticket and a failing test case?

- Jon

--
Jonathan Wage
http://www.jwage.com
http://www.centresource.com

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
romanb  
View profile
 More options 17 May, 09:43
From: romanb <ro...@code-factory.org>
Date: Sat, 17 May 2008 01:43:52 -0700 (PDT)
Local: Sat 17 May 2008 09:43
Subject: Re: Bug?

On May 14, 9:14 pm, Alex <outroa...@gmail.com> wrote:

> Could the treeObject be altering default Doctrine behavior?

Yes it does. The tree object auto-adds lft/rgt/level to the select
part, hence even if you dont use a select() in your query it ends up
as select lft/rgt/level, then later it reaches the dql parser and
there the select part is not missing, so no fields (except PKs) are
auto-added.

Thats the explanation for the behavior. What is questionable here is
that the tree object may not need to add these select bits IF the
custom query has no select part at all since the parser will then auto-
select all of them. For this issue you can open a ticket.

Regards

Roman


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google