mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-03-17 06:59:51 +00:00
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7454 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
460223b61a
commit
995040a98a
3 changed files with 44 additions and 7 deletions
|
@ -300,7 +300,7 @@ class ContainableBehavior extends ModelBehavior {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$optionKey = in_array($key, $options, true);
|
$optionKey = in_array($key, $options, true);
|
||||||
if (!$optionKey && is_string($key) && preg_match('/^[a-zA-Z(]/', $key) && (!isset($Model->{$key}) || !is_object($Model->{$key}))) {
|
if (!$optionKey && is_string($key) && preg_match('/^[a-z(]/', $key) && (!isset($Model->{$key}) || !is_object($Model->{$key}))) {
|
||||||
$option = 'fields';
|
$option = 'fields';
|
||||||
$val = array($key);
|
$val = array($key);
|
||||||
if ($key{0} == '(') {
|
if ($key{0} == '(') {
|
||||||
|
|
|
@ -646,7 +646,7 @@ class Model extends Overloadable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($this->{$type}[$assocKey]['with']) && !empty($this->{$type}[$assocKey]['with'])) {
|
if (!empty($this->{$type}[$assocKey]['with'])) {
|
||||||
$joinClass = $this->{$type}[$assocKey]['with'];
|
$joinClass = $this->{$type}[$assocKey]['with'];
|
||||||
if (is_array($joinClass)) {
|
if (is_array($joinClass)) {
|
||||||
$joinClass = key($joinClass);
|
$joinClass = key($joinClass);
|
||||||
|
@ -665,15 +665,14 @@ class Model extends Overloadable {
|
||||||
'table' => $this->{$type}[$assocKey]['joinTable'],
|
'table' => $this->{$type}[$assocKey]['joinTable'],
|
||||||
'ds' => $this->useDbConfig
|
'ds' => $this->useDbConfig
|
||||||
));
|
));
|
||||||
$this->{$joinClass}->primaryKey = $this->{$type}[$assocKey]['foreignKey'];
|
|
||||||
} else {
|
} else {
|
||||||
$this->__constructLinkedModel($joinClass, $plugin . $joinClass);
|
$this->__constructLinkedModel($joinClass, $plugin . $joinClass);
|
||||||
|
|
||||||
if (count($this->{$joinClass}->schema()) <= 2) {
|
|
||||||
$this->{$joinClass}->primaryKey = $this->{$type}[$assocKey]['foreignKey'];
|
|
||||||
}
|
|
||||||
$this->{$type}[$assocKey]['joinTable'] = $this->{$joinClass}->table;
|
$this->{$type}[$assocKey]['joinTable'] = $this->{$joinClass}->table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->{$joinClass}->primaryKey == 'id' && count($this->{$joinClass}->schema()) <= 2) {
|
||||||
|
$this->{$joinClass}->primaryKey = $this->{$type}[$assocKey]['foreignKey'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5545,6 +5545,44 @@ class ModelTest extends CakeTestCase {
|
||||||
$this->loadFixtures('Item', 'Portfolio', 'ItemsPortfolio');
|
$this->loadFixtures('Item', 'Portfolio', 'ItemsPortfolio');
|
||||||
$TestModel3 =& new Portfolio();
|
$TestModel3 =& new Portfolio();
|
||||||
$this->assertEqual($TestModel3->ItemsPortfolio->primaryKey, 'id');
|
$this->assertEqual($TestModel3->ItemsPortfolio->primaryKey, 'id');
|
||||||
|
|
||||||
|
//test conformant models with PK in join table - join table contains extra field
|
||||||
|
$this->loadFixtures('JoinA', 'JoinB', 'JoinAB');
|
||||||
|
$TestModel4 =& new JoinA();
|
||||||
|
$this->assertEqual($TestModel4->JoinAsJoinB->primaryKey, 'id');
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* testInsertAnotherHabtmRecordWithSameForeignKey method
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function testInsertAnotherHabtmRecordWithSameForeignKey() {
|
||||||
|
$this->loadFixtures('JoinA', 'JoinB', 'JoinAB');
|
||||||
|
$TestModel = new JoinA();
|
||||||
|
|
||||||
|
$result = $TestModel->JoinAsJoinB->findById(1);
|
||||||
|
$expected = array('JoinAsJoinB' => array('id' => 1, 'join_a_id' => 1, 'join_b_id' => 2, 'other' => 'Data for Join A 1 Join B 2', 'created' => '2008-01-03 10:56:33', 'updated' => '2008-01-03 10:56:33'));
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$TestModel->JoinAsJoinB->create();
|
||||||
|
$result = $TestModel->JoinAsJoinB->save(array('join_a_id' => 1, 'join_b_id' => 1, 'other' => 'Data for Join A 1 Join B 1', 'created' => '2008-01-03 10:56:44', 'updated' => '2008-01-03 10:56:44'));
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$lastInsertId = $TestModel->JoinAsJoinB->getLastInsertID();
|
||||||
|
$this->assertTrue($lastInsertId != null);
|
||||||
|
|
||||||
|
$result = $TestModel->JoinAsJoinB->findById(1);
|
||||||
|
$expected = array('JoinAsJoinB' => array('id' => 1, 'join_a_id' => 1, 'join_b_id' => 2, 'other' => 'Data for Join A 1 Join B 2', 'created' => '2008-01-03 10:56:33', 'updated' => '2008-01-03 10:56:33'));
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$updatedValue = 'UPDATED Data for Join A 1 Join B 2';
|
||||||
|
$TestModel->JoinAsJoinB->id = 1;
|
||||||
|
$result = $TestModel->JoinAsJoinB->saveField('other', $updatedValue, false);
|
||||||
|
$this->assertTrue($result);
|
||||||
|
|
||||||
|
$result = $TestModel->JoinAsJoinB->findById(1);
|
||||||
|
$this->assertEqual($result['JoinAsJoinB']['other'], $updatedValue);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* endTest method
|
* endTest method
|
||||||
|
|
Loading…
Add table
Reference in a new issue