mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Added ID,ID,ID syntax for populating many-many joins
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@40420 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
ff00abd449
commit
c04c8f1a5c
@ -117,14 +117,16 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
foreach($items as $identifier => $fields) {
|
foreach($items as $identifier => $fields) {
|
||||||
$obj = new $dataClass();
|
$obj = new $dataClass();
|
||||||
foreach($fields as $fieldName => $fieldVal) {
|
foreach($fields as $fieldName => $fieldVal) {
|
||||||
// Parse a dictionary reference - used to set foreign keys
|
if($obj->many_many($fieldName)) {
|
||||||
if(substr($fieldVal,0,2) == '=>') {
|
$items = split(' *, *',trim($fieldVal));
|
||||||
list($a, $b) = explode('.', substr($fieldVal,2), 2);
|
foreach($items as $item) {
|
||||||
$obj->$fieldName = $this->fixtureDictionary[$a][$b];
|
$parsedItems[] = $this->parseFixtureVal($item);
|
||||||
|
}
|
||||||
|
$obj->write();
|
||||||
|
$obj->$fieldName()->setByIdList($parsedItems);
|
||||||
|
|
||||||
// Regular field value setting
|
|
||||||
} else {
|
} else {
|
||||||
$obj->$fieldName = $fieldVal;
|
$obj->$fieldName = $this->parseFixtureVal($fieldVal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$obj->write();
|
$obj->write();
|
||||||
@ -135,6 +137,21 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a value from a fixture file. If it starts with => it will get an ID from the fixture dictionary
|
||||||
|
*/
|
||||||
|
protected function parseFixtureVal($fieldVal) {
|
||||||
|
// Parse a dictionary reference - used to set foreign keys
|
||||||
|
if(substr($fieldVal,0,2) == '=>') {
|
||||||
|
list($a, $b) = explode('.', substr($fieldVal,2), 2);
|
||||||
|
return $this->fixtureDictionary[$a][$b];
|
||||||
|
|
||||||
|
// Regular field value setting
|
||||||
|
} else {
|
||||||
|
return $fieldVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function tearDown() {
|
function tearDown() {
|
||||||
// Delete our temporary database
|
// Delete our temporary database
|
||||||
$dbConn = DB::getConn();
|
$dbConn = DB::getConn();
|
||||||
|
Loading…
Reference in New Issue
Block a user