mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fix association lazy-loading when used with ContainableBehavior
This commit is contained in:
parent
0b6c93cf82
commit
4adc042882
3 changed files with 42 additions and 0 deletions
|
@ -735,6 +735,11 @@ class Model extends Object {
|
|||
if (isset($name, $this->{$type}[$name])) {
|
||||
$className = empty($this->{$type}[$name]['className']) ? $name : $this->{$type}[$name]['className'];
|
||||
break;
|
||||
}
|
||||
elseif (isset($name, $this->__backAssociation[$type][$name])) {
|
||||
$className = empty($this->__backAssociation[$type][$name]['className']) ?
|
||||
$name : $this->__backAssociation[$type][$name]['className'];
|
||||
break;
|
||||
} else if ($type == 'hasAndBelongsToMany') {
|
||||
foreach ($this->{$type} as $k => $relation) {
|
||||
if (empty($relation['with'])) {
|
||||
|
|
|
@ -3588,6 +3588,29 @@ class ContainableBehaviorTest extends CakeTestCase {
|
|||
$this->assertEmpty($result, 'Should be empty.');
|
||||
}
|
||||
|
||||
/**
|
||||
* testLazyLoad method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testLazyLoad() {
|
||||
// Local set up
|
||||
$this->User = ClassRegistry::init('User');
|
||||
$this->User->bindModel(array(
|
||||
'hasMany' => array('Article', 'ArticleFeatured', 'Comment')
|
||||
), false);
|
||||
|
||||
try {
|
||||
$this->User->find('first', array(
|
||||
'contain' => 'Comment',
|
||||
'lazyLoad' => true
|
||||
));
|
||||
} catch (Exception $e) {
|
||||
$exceptions = true;
|
||||
}
|
||||
$this->assertTrue(empty($exceptions));
|
||||
}
|
||||
|
||||
/**
|
||||
* containments method
|
||||
*
|
||||
|
|
|
@ -179,6 +179,20 @@ class User extends CakeTestModel {
|
|||
* @var array
|
||||
*/
|
||||
public $validate = array('user' => 'notEmpty', 'password' => 'notEmpty');
|
||||
|
||||
/**
|
||||
* beforeFind() callback used to run ContainableBehaviorTest::testLazyLoad()
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function beforeFind ($queryData) {
|
||||
if (!empty($queryData['lazyLoad'])) {
|
||||
if (!isset($this->Article, $this->Comment, $this->ArticleFeatured)) {
|
||||
throw new Exception('Unavailable associations');
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue