mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-19 01:34:44 +08:00
removed support for unlinkAll() from elasticsearch
feature is not reliable fixes #5136
This commit is contained in:
@ -10,6 +10,7 @@ namespace yii\elasticsearch;
|
|||||||
use Yii;
|
use Yii;
|
||||||
use yii\base\InvalidCallException;
|
use yii\base\InvalidCallException;
|
||||||
use yii\base\InvalidConfigException;
|
use yii\base\InvalidConfigException;
|
||||||
|
use yii\base\NotSupportedException;
|
||||||
use yii\db\BaseActiveRecord;
|
use yii\db\BaseActiveRecord;
|
||||||
use yii\helpers\ArrayHelper;
|
use yii\helpers\ArrayHelper;
|
||||||
use yii\helpers\Inflector;
|
use yii\helpers\Inflector;
|
||||||
@ -604,4 +605,14 @@ class ActiveRecord extends BaseActiveRecord
|
|||||||
|
|
||||||
return $n;
|
return $n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroys the relationship in current model.
|
||||||
|
*
|
||||||
|
* This method is not supported by elasticsearch.
|
||||||
|
*/
|
||||||
|
public function unlinkAll($name, $delete = false)
|
||||||
|
{
|
||||||
|
throw new NotSupportedException('unlinkAll() is not supported by elasticsearch, use unlink() instead.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ Yii Framework 2 elasticsearch extension Change Log
|
|||||||
|
|
||||||
- Bug #3587: Fixed an issue with storing empty records (cebe)
|
- Bug #3587: Fixed an issue with storing empty records (cebe)
|
||||||
- Bug #4187: Elasticsearch dynamic scripting is disabled in 1.2.0, so do not use it in query builder (cebe)
|
- Bug #4187: Elasticsearch dynamic scripting is disabled in 1.2.0, so do not use it in query builder (cebe)
|
||||||
- Enh #3520: Added `unlinkAll()`-method to active record to remove all records of a model relation (NmDimas, samdark, cebe)
|
|
||||||
- Enh #3527: Added `highlight` property to Query and ActiveRecord. (Borales)
|
- Enh #3527: Added `highlight` property to Query and ActiveRecord. (Borales)
|
||||||
- Enh #4048: Added `init` event to `ActiveQuery` classes (qiangxue)
|
- Enh #4048: Added `init` event to `ActiveQuery` classes (qiangxue)
|
||||||
- Enh #4086: changedAttributes of afterSave Event now contain old values (dizews)
|
- Enh #4086: changedAttributes of afterSave Event now contain old values (dizews)
|
||||||
|
@ -804,6 +804,9 @@ class ActiveRecordTest extends ElasticSearchTestCase
|
|||||||
$this->assertFalse(isset($items[2]));
|
$this->assertFalse(isset($items[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \yii\base\NotSupportedException
|
||||||
|
*/
|
||||||
public function testArrayAttributeRelationUnLinkAll()
|
public function testArrayAttributeRelationUnLinkAll()
|
||||||
{
|
{
|
||||||
/* @var $order Order */
|
/* @var $order Order */
|
||||||
@ -825,14 +828,51 @@ class ActiveRecordTest extends ElasticSearchTestCase
|
|||||||
$this->assertEquals(0, count($items));
|
$this->assertEquals(0, count($items));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUnlinkAllAndConditionSetNull()
|
public function testUnlinkAll()
|
||||||
{
|
{
|
||||||
$this->markTestSkipped('https://github.com/yiisoft/yii2/issues/5136');
|
// not supported by elasticsearch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \yii\base\NotSupportedException
|
||||||
|
*/
|
||||||
|
public function testUnlinkAllAndConditionSetNull()
|
||||||
|
{
|
||||||
|
/* @var $customerClass \yii\db\BaseActiveRecord */
|
||||||
|
$customerClass = $this->getCustomerClass();
|
||||||
|
/* @var $orderClass \yii\db\BaseActiveRecord */
|
||||||
|
$orderClass = $this->getOrderWithNullFKClass();
|
||||||
|
|
||||||
|
// in this test all orders are owned by customer 1
|
||||||
|
$orderClass::updateAll(['customer_id' => 1]);
|
||||||
|
$this->afterSave();
|
||||||
|
|
||||||
|
$customer = $customerClass::findOne(1);
|
||||||
|
$this->assertEquals(3, count($customer->ordersWithNullFK));
|
||||||
|
$this->assertEquals(1, count($customer->expensiveOrdersWithNullFK));
|
||||||
|
$this->assertEquals(3, $orderClass::find()->count());
|
||||||
|
$customer->unlinkAll('expensiveOrdersWithNullFK');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \yii\base\NotSupportedException
|
||||||
|
*/
|
||||||
public function testUnlinkAllAndConditionDelete()
|
public function testUnlinkAllAndConditionDelete()
|
||||||
{
|
{
|
||||||
$this->markTestSkipped('https://github.com/yiisoft/yii2/issues/5136');
|
/* @var $customerClass \yii\db\BaseActiveRecord */
|
||||||
|
$customerClass = $this->getCustomerClass();
|
||||||
|
/* @var $orderClass \yii\db\BaseActiveRecord */
|
||||||
|
$orderClass = $this->getOrderWithNullFKClass();
|
||||||
|
|
||||||
|
// in this test all orders are owned by customer 1
|
||||||
|
$orderClass::updateAll(['customer_id' => 1]);
|
||||||
|
$this->afterSave();
|
||||||
|
|
||||||
|
$customer = $customerClass::findOne(1);
|
||||||
|
$this->assertEquals(3, count($customer->ordersWithNullFK));
|
||||||
|
$this->assertEquals(1, count($customer->expensiveOrdersWithNullFK));
|
||||||
|
$this->assertEquals(3, $orderClass::find()->count());
|
||||||
|
$customer->unlinkAll('expensiveOrdersWithNullFK', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO test AR with not mapped PK
|
// TODO test AR with not mapped PK
|
||||||
|
Reference in New Issue
Block a user