Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
b022675a
Commit
b022675a
authored
Aug 15, 2006
by
pookey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
little refactorings
parent
e75f3598
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
72 deletions
+55
-72
Collection.php
Doctrine/Collection.php
+24
-3
Record.php
Doctrine/Record.php
+13
-63
CollectionTestCase.php
tests/CollectionTestCase.php
+15
-6
run.php
tests/run.php
+3
-0
No files found.
Doctrine/Collection.php
View file @
b022675a
...
...
@@ -493,8 +493,17 @@ class Doctrine_Collection extends Doctrine_Access implements Countable, Iterator
public
function
loadRelated
(
$name
=
null
)
{
$query
=
new
Doctrine_Query
(
$this
->
table
->
getSession
());
if
(
!
isset
(
$name
))
if
(
!
isset
(
$name
))
{
foreach
(
$this
->
data
as
$record
)
:
$value
=
$record
->
getIncremented
();
if
(
$value
!==
null
)
$list
[]
=
$value
;
endforeach
;
$query
->
from
(
$this
->
table
->
getComponentName
()
.
"("
.
implode
(
", "
,
$this
->
table
->
getPrimaryKeys
())
.
")"
);
$query
->
where
(
$this
->
table
->
getComponentName
()
.
".id IN ("
.
substr
(
str_repeat
(
"?, "
,
count
(
$list
)),
0
,
-
2
)
.
")"
);
return
$query
;
}
$rel
=
$this
->
table
->
getForeignKey
(
$name
);
$table
=
$rel
->
getTable
();
...
...
@@ -516,7 +525,20 @@ class Doctrine_Collection extends Doctrine_Access implements Countable, Iterator
$dql
=
$rel
->
getRelationDql
(
count
(
$list
),
'collection'
);
$coll
=
$query
->
query
(
$dql
,
$list
);
$this
->
populateRelated
(
$name
,
$coll
);
}
/**
* populateRelated
*
* @param string $name
* @param Doctrine_Collection $coll
* @return void
*/
public
function
populateRelated
(
$name
,
Doctrine_Collection
$coll
)
{
$rel
=
$this
->
table
->
getForeignKey
(
$name
);
$table
=
$rel
->
getTable
();
$foreign
=
$rel
->
getForeign
();
$local
=
$rel
->
getLocal
();
if
(
$rel
instanceof
Doctrine_LocalKey
)
{
foreach
(
$this
->
data
as
$key
=>
$record
)
{
...
...
@@ -565,7 +587,6 @@ class Doctrine_Collection extends Doctrine_Access implements Countable, Iterator
$this
->
data
[
$key
]
->
setRelated
(
$name
,
$sub
);
}
}
}
/**
* getNormalIterator
...
...
Doctrine/Record.php
View file @
b022675a
...
...
@@ -1140,27 +1140,19 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
}
break
;
default
:
$query
=
$fk
->
getRelationDql
(
1
);
// ONE-TO-MANY
if
(
$fk
instanceof
Doctrine_ForeignKey
)
{
$id
=
$this
->
get
(
$local
);
$query
=
"FROM "
.
$table
->
getComponentName
()
.
" WHERE "
.
$table
->
getComponentName
()
.
"."
.
$fk
->
getForeign
()
.
" = ?"
;
$coll
=
$graph
->
query
(
$query
,
array
(
$id
));
$this
->
references
[
$name
]
=
$coll
;
$this
->
references
[
$name
]
->
setReference
(
$this
,
$fk
);
$this
->
originals
[
$name
]
=
clone
$coll
;
$coll
=
$graph
->
query
(
$query
,
array
(
$id
));
$coll
->
setReference
(
$this
,
$fk
);
}
elseif
(
$fk
instanceof
Doctrine_Association
)
{
$query
=
$fk
->
getRelationDql
(
1
);
$coll
=
$graph
->
query
(
$query
,
array
(
$this
->
getIncremented
()));
$this
->
references
[
$name
]
=
$coll
;
$this
->
originals
[
$name
]
=
clone
$coll
;
$id
=
$this
->
getIncremented
();
$coll
=
$graph
->
query
(
$query
,
array
(
$id
));
}
$this
->
references
[
$name
]
=
$coll
;
$this
->
originals
[
$name
]
=
clone
$coll
;
endswitch
;
break
;
endswitch
;
...
...
@@ -1179,17 +1171,6 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
return
$this
->
filters
[
$componentAlias
];
}
/**
* sets enumerated value array for given field
*
* @param string $field
* @param array $values
* @return void
*/
final
public
function
setEnumValues
(
$field
,
array
$values
)
{
$this
->
table
->
setEnumValues
(
$field
,
$values
);
}
/**
* binds One-to-One composite relation
*
...
...
@@ -1230,14 +1211,6 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
final
public
function
hasMany
(
$componentName
,
$foreignKey
,
$localKey
=
null
)
{
$this
->
table
->
bind
(
$componentName
,
$foreignKey
,
Doctrine_Relation
::
MANY_AGGREGATE
,
$localKey
);
}
/**
* setInheritanceMap
* @param array $inheritanceMap
* @return void
*/
final
public
function
setInheritanceMap
(
array
$inheritanceMap
)
{
$this
->
table
->
setInheritanceMap
(
$inheritanceMap
);
}
/**
* setPrimaryKey
* @param mixed $key
...
...
@@ -1245,24 +1218,6 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
final
public
function
setPrimaryKey
(
$key
)
{
$this
->
table
->
setPrimaryKey
(
$key
);
}
/**
* setTableName
* @param string $name table name
* @return void
*/
final
public
function
setTableName
(
$name
)
{
$this
->
table
->
setTableName
(
$name
);
}
/**
* setAttribute
* @param integer $attribute
* @param mixed $value
* @see Doctrine::ATTR_* constants
* @return void
*/
final
public
function
setAttribute
(
$attribute
,
$value
)
{
$this
->
table
->
setAttribute
(
$attribute
,
$value
);
}
/**
* hasColumn
* sets a column definition
...
...
@@ -1294,6 +1249,9 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
* @param array $a
*/
public
function
__call
(
$m
,
$a
)
{
if
(
method_exists
(
$this
->
table
,
$m
))
return
call_user_func_array
(
array
(
$this
->
table
,
$m
),
$a
);
if
(
!
function_exists
(
$m
))
throw
new
Doctrine_Record_Exception
(
"unknown callback '
$m
'"
);
...
...
@@ -1302,16 +1260,8 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
$a
[
0
]
=
$this
->
get
(
$column
);
$newvalue
=
call_user_func_array
(
$m
,
$a
);
/**
if( ! isset($a[1]) || $a[1] == Doctrine_Record::CALLBACK_RAW) {
*/
$this
->
data
[
$column
]
=
$newvalue
;
/**
} elseif($a[1] == Doctrine_Record::CALLBACK_STATEWISE) {
$this->set($column, call_user_func_array($m, $a));
}
*/
$this
->
data
[
$column
]
=
$newvalue
;
}
return
$this
;
}
...
...
tests/CollectionTestCase.php
View file @
b022675a
...
...
@@ -14,13 +14,7 @@ class Doctrine_CollectionTestCase extends Doctrine_UnitTestCase {
$this
->
assertTrue
(
$coll
->
count
(),
3
);
$this
->
assertEqual
(
$coll
->
getKeys
(),
array
(
0
,
1
,
2
));
}
public
function
testLoadRelated
()
{
$coll
=
$this
->
session
->
query
(
"FROM User"
);
$q
=
$coll
->
loadRelated
();
$this
->
assertTrue
(
$q
instanceof
Doctrine_Query
);
}
public
function
testLoadRelatedForAssociation
()
{
$coll
=
$this
->
session
->
query
(
"FROM User"
);
...
...
@@ -75,7 +69,22 @@ class Doctrine_CollectionTestCase extends Doctrine_UnitTestCase {
$this
->
session
->
clear
();
}
public
function
testLoadRelated
()
{
$coll
=
$this
->
session
->
query
(
"FROM User(id)"
);
$q
=
$coll
->
loadRelated
();
$this
->
assertTrue
(
$q
instanceof
Doctrine_Query
);
$q
->
addFrom
(
'User.Group'
);
$coll2
=
$q
->
execute
(
$coll
->
getPrimaryKeys
());
$this
->
assertEqual
(
$coll2
->
count
(),
$coll
->
count
());
$count
=
$this
->
dbh
->
count
();
$coll
[
0
]
->
Group
[
0
];
$this
->
assertEqual
(
$count
,
$this
->
dbh
->
count
());
}
public
function
testLoadRelatedForLocalKeyRelation
()
{
$coll
=
$this
->
session
->
query
(
"FROM User"
);
...
...
tests/run.php
View file @
b022675a
...
...
@@ -23,6 +23,7 @@ require_once("RawSqlTestCase.php");
require_once
(
"CustomPrimaryKeyTestCase.php"
);
require_once
(
"FilterTestCase.php"
);
require_once
(
"ValueHolderTestCase.php"
);
require_once
(
"QueryLimitTestCase.php"
);
error_reporting
(
E_ALL
);
...
...
@@ -66,6 +67,8 @@ $test->addTestCase(new Doctrine_ValidatorTestCase());
$test
->
addTestCase
(
new
Doctrine_CollectionTestCase
());
$test
->
addTestCase
(
new
Doctrine_Query_Limit_TestCase
());
//$test->addTestCase(new Doctrine_Cache_FileTestCase());
//$test->addTestCase(new Doctrine_Cache_SqliteTestCase());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment