Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
PSDI Army
yii2
Commits
af5d87ac
Commit
af5d87ac
authored
Nov 24, 2013
by
Carsten Brandt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
renamed elasticsearch PK to id
parent
64359373
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
87 additions
and
61 deletions
+87
-61
ActiveQuery.php
framework/yii/elasticsearch/ActiveQuery.php
+4
-4
ActiveRecord.php
framework/yii/elasticsearch/ActiveRecord.php
+20
-14
QueryBuilder.php
framework/yii/elasticsearch/QueryBuilder.php
+15
-7
Customer.php
tests/unit/data/ar/elasticsearch/Customer.php
+1
-1
Order.php
tests/unit/data/ar/elasticsearch/Order.php
+5
-5
OrderItem.php
tests/unit/data/ar/elasticsearch/OrderItem.php
+2
-2
ActiveRecordTest.php
tests/unit/framework/elasticsearch/ActiveRecordTest.php
+40
-28
No files found.
framework/yii/elasticsearch/ActiveQuery.php
View file @
af5d87ac
...
@@ -92,7 +92,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
...
@@ -92,7 +92,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
if
(
$this
->
asArray
)
{
if
(
$this
->
asArray
)
{
foreach
(
$models
as
$key
=>
$model
)
{
foreach
(
$models
as
$key
=>
$model
)
{
$models
[
$key
]
=
$model
[
'_source'
];
$models
[
$key
]
=
$model
[
'_source'
];
$models
[
$key
][
'primaryKey'
]
=
$model
[
'_id'
];
$models
[
$key
][
ActiveRecord
::
PRIMARY_KEY_NAME
]
=
$model
[
'_id'
];
}
}
}
}
if
(
!
empty
(
$this
->
with
))
{
if
(
!
empty
(
$this
->
with
))
{
...
@@ -116,7 +116,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
...
@@ -116,7 +116,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
}
}
if
(
$this
->
asArray
)
{
if
(
$this
->
asArray
)
{
$model
=
$result
[
'_source'
];
$model
=
$result
[
'_source'
];
$model
[
'primaryKey'
]
=
$result
[
'_id'
];
$model
[
ActiveRecord
::
PRIMARY_KEY_NAME
]
=
$result
[
'_id'
];
}
else
{
}
else
{
/** @var ActiveRecord $class */
/** @var ActiveRecord $class */
$class
=
$this
->
modelClass
;
$class
=
$this
->
modelClass
;
...
@@ -137,7 +137,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
...
@@ -137,7 +137,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
{
{
$record
=
parent
::
one
(
$db
);
$record
=
parent
::
one
(
$db
);
if
(
$record
!==
false
)
{
if
(
$record
!==
false
)
{
if
(
$field
==
'primaryKey'
)
{
if
(
$field
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
return
$record
[
'_id'
];
return
$record
[
'_id'
];
}
elseif
(
isset
(
$record
[
'_source'
][
$field
]))
{
}
elseif
(
isset
(
$record
[
'_source'
][
$field
]))
{
return
$record
[
'_source'
][
$field
];
return
$record
[
'_source'
][
$field
];
...
@@ -151,7 +151,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
...
@@ -151,7 +151,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
*/
*/
public
function
column
(
$field
,
$db
=
null
)
public
function
column
(
$field
,
$db
=
null
)
{
{
if
(
$field
==
'primaryKey'
)
{
if
(
$field
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
$command
=
$this
->
createCommand
(
$db
);
$command
=
$this
->
createCommand
(
$db
);
$command
->
queryParts
[
'fields'
]
=
[];
$command
->
queryParts
[
'fields'
]
=
[];
$rows
=
$command
->
queryAll
()[
'hits'
];
$rows
=
$command
->
queryAll
()[
'hits'
];
...
...
framework/yii/elasticsearch/ActiveRecord.php
View file @
af5d87ac
...
@@ -27,6 +27,8 @@ use yii\helpers\StringHelper;
...
@@ -27,6 +27,8 @@ use yii\helpers\StringHelper;
*/
*/
class
ActiveRecord
extends
\yii\db\ActiveRecord
class
ActiveRecord
extends
\yii\db\ActiveRecord
{
{
const
PRIMARY_KEY_NAME
=
'id'
;
private
$_id
;
private
$_id
;
private
$_version
;
private
$_version
;
...
@@ -48,8 +50,8 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -48,8 +50,8 @@ class ActiveRecord extends \yii\db\ActiveRecord
{
{
$query
=
static
::
createQuery
();
$query
=
static
::
createQuery
();
if
(
is_array
(
$q
))
{
if
(
is_array
(
$q
))
{
if
(
count
(
$q
)
==
1
&&
(
array_key_exists
(
'primaryKey'
,
$q
)))
{
if
(
count
(
$q
)
==
1
&&
(
array_key_exists
(
ActiveRecord
::
PRIMARY_KEY_NAME
,
$q
)))
{
return
static
::
get
(
$q
[
'primaryKey'
]);
return
static
::
get
(
$q
[
ActiveRecord
::
PRIMARY_KEY_NAME
]);
}
}
return
$query
->
where
(
$q
)
->
one
();
return
$query
->
where
(
$q
)
->
one
();
}
elseif
(
$q
!==
null
)
{
}
elseif
(
$q
!==
null
)
{
...
@@ -68,7 +70,6 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -68,7 +70,6 @@ class ActiveRecord extends \yii\db\ActiveRecord
* for more details on these options.
* for more details on these options.
* @return static|null The record instance or null if it was not found.
* @return static|null The record instance or null if it was not found.
*/
*/
public
static
function
get
(
$primaryKey
,
$options
=
[])
public
static
function
get
(
$primaryKey
,
$options
=
[])
{
{
if
(
$primaryKey
===
null
)
{
if
(
$primaryKey
===
null
)
{
...
@@ -132,12 +133,17 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -132,12 +133,17 @@ class ActiveRecord extends \yii\db\ActiveRecord
// TODO implement copy and move as pk change is not possible
// TODO implement copy and move as pk change is not possible
public
function
getId
()
{
return
$this
->
_id
;
}
/**
/**
* Sets the primary key
* Sets the primary key
* @param mixed $value
* @param mixed $value
* @throws \yii\base\InvalidCallException when record is not new
* @throws \yii\base\InvalidCallException when record is not new
*/
*/
public
function
set
PrimaryKey
(
$value
)
public
function
set
Id
(
$value
)
{
{
if
(
$this
->
isNewRecord
)
{
if
(
$this
->
isNewRecord
)
{
$this
->
_id
=
$value
;
$this
->
_id
=
$value
;
...
@@ -152,7 +158,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -152,7 +158,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
public
function
getPrimaryKey
(
$asArray
=
false
)
public
function
getPrimaryKey
(
$asArray
=
false
)
{
{
if
(
$asArray
)
{
if
(
$asArray
)
{
return
[
'primaryKey'
=>
$this
->
_id
];
return
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
$this
->
_id
];
}
else
{
}
else
{
return
$this
->
_id
;
return
$this
->
_id
;
}
}
...
@@ -165,7 +171,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -165,7 +171,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
{
{
$id
=
$this
->
isNewRecord
?
null
:
$this
->
_id
;
$id
=
$this
->
isNewRecord
?
null
:
$this
->
_id
;
if
(
$asArray
)
{
if
(
$asArray
)
{
return
[
'primaryKey'
=>
$id
];
return
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
$id
];
}
else
{
}
else
{
return
$this
->
_id
;
return
$this
->
_id
;
}
}
...
@@ -180,7 +186,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -180,7 +186,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
*/
*/
public
static
function
primaryKey
()
public
static
function
primaryKey
()
{
{
return
[
'primaryKey'
];
return
[
ActiveRecord
::
PRIMARY_KEY_NAME
];
}
}
/**
/**
...
@@ -218,7 +224,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -218,7 +224,7 @@ class ActiveRecord extends \yii\db\ActiveRecord
*/
*/
public
static
function
create
(
$row
)
public
static
function
create
(
$row
)
{
{
$row
[
'_source'
][
'primaryKey'
]
=
$row
[
'_id'
];
$row
[
'_source'
][
ActiveRecord
::
PRIMARY_KEY_NAME
]
=
$row
[
'_id'
];
$record
=
parent
::
create
(
$row
[
'_source'
]);
$record
=
parent
::
create
(
$row
[
'_source'
]);
return
$record
;
return
$record
;
}
}
...
@@ -317,10 +323,10 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -317,10 +323,10 @@ class ActiveRecord extends \yii\db\ActiveRecord
*/
*/
public
static
function
updateAll
(
$attributes
,
$condition
=
[],
$params
=
[])
public
static
function
updateAll
(
$attributes
,
$condition
=
[],
$params
=
[])
{
{
if
(
count
(
$condition
)
==
1
&&
isset
(
$condition
[
'primaryKey'
]))
{
if
(
count
(
$condition
)
==
1
&&
isset
(
$condition
[
ActiveRecord
::
PRIMARY_KEY_NAME
]))
{
$primaryKeys
=
(
array
)
$condition
[
'primaryKey'
];
$primaryKeys
=
(
array
)
$condition
[
ActiveRecord
::
PRIMARY_KEY_NAME
];
}
else
{
}
else
{
$primaryKeys
=
static
::
find
()
->
where
(
$condition
)
->
column
(
'primaryKey'
);
$primaryKeys
=
static
::
find
()
->
where
(
$condition
)
->
column
(
ActiveRecord
::
PRIMARY_KEY_NAME
);
}
}
if
(
empty
(
$primaryKeys
))
{
if
(
empty
(
$primaryKeys
))
{
return
0
;
return
0
;
...
@@ -372,10 +378,10 @@ class ActiveRecord extends \yii\db\ActiveRecord
...
@@ -372,10 +378,10 @@ class ActiveRecord extends \yii\db\ActiveRecord
*/
*/
public
static
function
deleteAll
(
$condition
=
[],
$params
=
[])
public
static
function
deleteAll
(
$condition
=
[],
$params
=
[])
{
{
if
(
count
(
$condition
)
==
1
&&
isset
(
$condition
[
'primaryKey'
]))
{
if
(
count
(
$condition
)
==
1
&&
isset
(
$condition
[
ActiveRecord
::
PRIMARY_KEY_NAME
]))
{
$primaryKeys
=
(
array
)
$condition
[
'primaryKey'
];
$primaryKeys
=
(
array
)
$condition
[
ActiveRecord
::
PRIMARY_KEY_NAME
];
}
else
{
}
else
{
$primaryKeys
=
static
::
find
()
->
where
(
$condition
)
->
column
(
'primaryKey'
);
$primaryKeys
=
static
::
find
()
->
where
(
$condition
)
->
column
(
ActiveRecord
::
PRIMARY_KEY_NAME
);
}
}
if
(
empty
(
$primaryKeys
))
{
if
(
empty
(
$primaryKeys
))
{
return
0
;
return
0
;
...
...
framework/yii/elasticsearch/QueryBuilder.php
View file @
af5d87ac
...
@@ -96,13 +96,21 @@ class QueryBuilder extends \yii\base\Object
...
@@ -96,13 +96,21 @@ class QueryBuilder extends \yii\base\Object
}
}
$orders
=
[];
$orders
=
[];
foreach
(
$columns
as
$name
=>
$direction
)
{
foreach
(
$columns
as
$name
=>
$direction
)
{
if
(
is_string
(
$direction
))
{
$column
=
$direction
;
$direction
=
SORT_ASC
;
}
else
{
$column
=
$name
;
}
if
(
$column
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
$column
=
'_id'
;
}
// allow elasticsearch extended syntax as described in http://www.elasticsearch.org/guide/reference/api/search/sort/
// allow elasticsearch extended syntax as described in http://www.elasticsearch.org/guide/reference/api/search/sort/
if
(
is_array
(
$direction
))
{
if
(
is_array
(
$direction
))
{
$orders
[]
=
array
(
$name
=>
$direction
);
$orders
[]
=
[
$column
=>
$direction
];
}
elseif
(
is_string
(
$direction
))
{
$orders
[]
=
$direction
;
}
else
{
}
else
{
$orders
[]
=
array
(
$name
=>
(
$direction
===
SORT_DESC
?
'desc'
:
'asc'
))
;
$orders
[]
=
[
$column
=>
(
$direction
===
SORT_DESC
?
'desc'
:
'asc'
)]
;
}
}
}
}
return
$orders
;
return
$orders
;
...
@@ -155,7 +163,7 @@ class QueryBuilder extends \yii\base\Object
...
@@ -155,7 +163,7 @@ class QueryBuilder extends \yii\base\Object
{
{
$parts
=
[];
$parts
=
[];
foreach
(
$condition
as
$attribute
=>
$value
)
{
foreach
(
$condition
as
$attribute
=>
$value
)
{
if
(
$attribute
==
'primaryKey'
)
{
if
(
$attribute
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
if
(
$value
==
null
)
{
// there is no null pk
if
(
$value
==
null
)
{
// there is no null pk
$parts
[]
=
[
'script'
=>
[
'script'
=>
'0==1'
]];
$parts
[]
=
[
'script'
=>
[
'script'
=>
'0==1'
]];
}
else
{
}
else
{
...
@@ -201,7 +209,7 @@ class QueryBuilder extends \yii\base\Object
...
@@ -201,7 +209,7 @@ class QueryBuilder extends \yii\base\Object
}
}
list
(
$column
,
$value1
,
$value2
)
=
$operands
;
list
(
$column
,
$value1
,
$value2
)
=
$operands
;
if
(
$column
==
'primaryKey'
)
{
if
(
$column
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
throw
new
NotSupportedException
(
'Between condition is not supported for primaryKey.'
);
throw
new
NotSupportedException
(
'Between condition is not supported for primaryKey.'
);
}
}
$filter
=
[
'range'
=>
[
$column
=>
[
'gte'
=>
$value1
,
'lte'
=>
$value2
]]];
$filter
=
[
'range'
=>
[
$column
=>
[
'gte'
=>
$value1
,
'lte'
=>
$value2
]]];
...
@@ -240,7 +248,7 @@ class QueryBuilder extends \yii\base\Object
...
@@ -240,7 +248,7 @@ class QueryBuilder extends \yii\base\Object
unset
(
$values
[
$i
]);
unset
(
$values
[
$i
]);
}
}
}
}
if
(
$column
==
'primaryKey'
)
{
if
(
$column
==
ActiveRecord
::
PRIMARY_KEY_NAME
)
{
if
(
empty
(
$values
)
&&
$canBeNull
)
{
// there is no null pk
if
(
empty
(
$values
)
&&
$canBeNull
)
{
// there is no null pk
$filter
=
[
'script'
=>
[
'script'
=>
'0==1'
]];
$filter
=
[
'script'
=>
[
'script'
=>
'0==1'
]];
}
else
{
}
else
{
...
...
tests/unit/data/ar/elasticsearch/Customer.php
View file @
af5d87ac
...
@@ -26,7 +26,7 @@ class Customer extends ActiveRecord
...
@@ -26,7 +26,7 @@ class Customer extends ActiveRecord
public
function
getOrders
()
public
function
getOrders
()
{
{
return
$this
->
hasMany
(
Order
::
className
(),
array
(
'customer_id'
=>
'primaryKey'
))
->
orderBy
(
'create_time'
);
return
$this
->
hasMany
(
Order
::
className
(),
array
(
'customer_id'
=>
ActiveRecord
::
PRIMARY_KEY_NAME
))
->
orderBy
(
'create_time'
);
}
}
public
static
function
active
(
$query
)
public
static
function
active
(
$query
)
...
...
tests/unit/data/ar/elasticsearch/Order.php
View file @
af5d87ac
...
@@ -19,17 +19,17 @@ class Order extends ActiveRecord
...
@@ -19,17 +19,17 @@ class Order extends ActiveRecord
public
function
getCustomer
()
public
function
getCustomer
()
{
{
return
$this
->
hasOne
(
Customer
::
className
(),
[
'primaryKey'
=>
'customer_id'
]);
return
$this
->
hasOne
(
Customer
::
className
(),
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
'customer_id'
]);
}
}
public
function
getOrderItems
()
public
function
getOrderItems
()
{
{
return
$this
->
hasMany
(
OrderItem
::
className
(),
[
'order_id'
=>
'primaryKey'
]);
return
$this
->
hasMany
(
OrderItem
::
className
(),
[
'order_id'
=>
ActiveRecord
::
PRIMARY_KEY_NAME
]);
}
}
public
function
getItems
()
public
function
getItems
()
{
{
return
$this
->
hasMany
(
Item
::
className
(),
[
'primaryKey'
=>
'item_id'
])
return
$this
->
hasMany
(
Item
::
className
(),
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
'item_id'
])
->
via
(
'orderItems'
)
->
orderBy
(
'name'
);
->
via
(
'orderItems'
)
->
orderBy
(
'name'
);
}
}
...
@@ -51,8 +51,8 @@ class Order extends ActiveRecord
...
@@ -51,8 +51,8 @@ class Order extends ActiveRecord
// public function getBooks()
// public function getBooks()
// {
// {
// return $this->hasMany('Item', [
'primaryKey'
=> 'item_id'])
// return $this->hasMany('Item', [
ActiveRecord::PRIMARY_KEY_NAME
=> 'item_id'])
// ->viaTable('tbl_order_item', ['order_id' =>
'primaryKey'
])
// ->viaTable('tbl_order_item', ['order_id' =>
ActiveRecord::PRIMARY_KEY_NAME
])
// ->where(['category_id' => 1]);
// ->where(['category_id' => 1]);
// }
// }
...
...
tests/unit/data/ar/elasticsearch/OrderItem.php
View file @
af5d87ac
...
@@ -19,11 +19,11 @@ class OrderItem extends ActiveRecord
...
@@ -19,11 +19,11 @@ class OrderItem extends ActiveRecord
public
function
getOrder
()
public
function
getOrder
()
{
{
return
$this
->
hasOne
(
Order
::
className
(),
[
'primaryKey'
=>
'order_id'
]);
return
$this
->
hasOne
(
Order
::
className
(),
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
'order_id'
]);
}
}
public
function
getItem
()
public
function
getItem
()
{
{
return
$this
->
hasOne
(
Item
::
className
(),
[
'primaryKey'
=>
'item_id'
]);
return
$this
->
hasOne
(
Item
::
className
(),
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
'item_id'
]);
}
}
}
}
tests/unit/framework/elasticsearch/ActiveRecordTest.php
View file @
af5d87ac
...
@@ -44,15 +44,15 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -44,15 +44,15 @@ class ActiveRecordTest extends ElasticSearchTestCase
$db
->
http
()
->
delete
(
'_all'
)
->
send
();
$db
->
http
()
->
delete
(
'_all'
)
->
send
();
$customer
=
new
Customer
();
$customer
=
new
Customer
();
$customer
->
primaryKey
=
1
;
$customer
->
id
=
1
;
$customer
->
setAttributes
([
'email'
=>
'user1@example.com'
,
'name'
=>
'user1'
,
'address'
=>
'address1'
,
'status'
=>
1
],
false
);
$customer
->
setAttributes
([
'email'
=>
'user1@example.com'
,
'name'
=>
'user1'
,
'address'
=>
'address1'
,
'status'
=>
1
],
false
);
$customer
->
save
(
false
);
$customer
->
save
(
false
);
$customer
=
new
Customer
();
$customer
=
new
Customer
();
$customer
->
primaryKey
=
2
;
$customer
->
id
=
2
;
$customer
->
setAttributes
([
'email'
=>
'user2@example.com'
,
'name'
=>
'user2'
,
'address'
=>
'address2'
,
'status'
=>
1
],
false
);
$customer
->
setAttributes
([
'email'
=>
'user2@example.com'
,
'name'
=>
'user2'
,
'address'
=>
'address2'
,
'status'
=>
1
],
false
);
$customer
->
save
(
false
);
$customer
->
save
(
false
);
$customer
=
new
Customer
();
$customer
=
new
Customer
();
$customer
->
primaryKey
=
3
;
$customer
->
id
=
3
;
$customer
->
setAttributes
([
'email'
=>
'user3@example.com'
,
'name'
=>
'user3'
,
'address'
=>
'address3'
,
'status'
=>
2
],
false
);
$customer
->
setAttributes
([
'email'
=>
'user3@example.com'
,
'name'
=>
'user3'
,
'address'
=>
'address3'
,
'status'
=>
2
],
false
);
$customer
->
save
(
false
);
$customer
->
save
(
false
);
...
@@ -60,36 +60,36 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -60,36 +60,36 @@ class ActiveRecordTest extends ElasticSearchTestCase
// INSERT INTO tbl_category (name) VALUES ('Movies');
// INSERT INTO tbl_category (name) VALUES ('Movies');
$item
=
new
Item
();
$item
=
new
Item
();
$item
->
primaryKey
=
1
;
$item
->
id
=
1
;
$item
->
setAttributes
([
'name'
=>
'Agile Web Application Development with Yii1.1 and PHP5'
,
'category_id'
=>
1
],
false
);
$item
->
setAttributes
([
'name'
=>
'Agile Web Application Development with Yii1.1 and PHP5'
,
'category_id'
=>
1
],
false
);
$item
->
save
(
false
);
$item
->
save
(
false
);
$item
=
new
Item
();
$item
=
new
Item
();
$item
->
primaryKey
=
2
;
$item
->
id
=
2
;
$item
->
setAttributes
([
'name'
=>
'Yii 1.1 Application Development Cookbook'
,
'category_id'
=>
1
],
false
);
$item
->
setAttributes
([
'name'
=>
'Yii 1.1 Application Development Cookbook'
,
'category_id'
=>
1
],
false
);
$item
->
save
(
false
);
$item
->
save
(
false
);
$item
=
new
Item
();
$item
=
new
Item
();
$item
->
primaryKey
=
3
;
$item
->
id
=
3
;
$item
->
setAttributes
([
'name'
=>
'Ice Age'
,
'category_id'
=>
2
],
false
);
$item
->
setAttributes
([
'name'
=>
'Ice Age'
,
'category_id'
=>
2
],
false
);
$item
->
save
(
false
);
$item
->
save
(
false
);
$item
=
new
Item
();
$item
=
new
Item
();
$item
->
primaryKey
=
4
;
$item
->
id
=
4
;
$item
->
setAttributes
([
'name'
=>
'Toy Story'
,
'category_id'
=>
2
],
false
);
$item
->
setAttributes
([
'name'
=>
'Toy Story'
,
'category_id'
=>
2
],
false
);
$item
->
save
(
false
);
$item
->
save
(
false
);
$item
=
new
Item
();
$item
=
new
Item
();
$item
->
primaryKey
=
5
;
$item
->
id
=
5
;
$item
->
setAttributes
([
'name'
=>
'Cars'
,
'category_id'
=>
2
],
false
);
$item
->
setAttributes
([
'name'
=>
'Cars'
,
'category_id'
=>
2
],
false
);
$item
->
save
(
false
);
$item
->
save
(
false
);
$order
=
new
Order
();
$order
=
new
Order
();
$order
->
primaryKey
=
1
;
$order
->
id
=
1
;
$order
->
setAttributes
([
'customer_id'
=>
1
,
'create_time'
=>
1325282384
,
'total'
=>
110.0
],
false
);
$order
->
setAttributes
([
'customer_id'
=>
1
,
'create_time'
=>
1325282384
,
'total'
=>
110.0
],
false
);
$order
->
save
(
false
);
$order
->
save
(
false
);
$order
=
new
Order
();
$order
=
new
Order
();
$order
->
primaryKey
=
2
;
$order
->
id
=
2
;
$order
->
setAttributes
([
'customer_id'
=>
2
,
'create_time'
=>
1325334482
,
'total'
=>
33.0
],
false
);
$order
->
setAttributes
([
'customer_id'
=>
2
,
'create_time'
=>
1325334482
,
'total'
=>
33.0
],
false
);
$order
->
save
(
false
);
$order
->
save
(
false
);
$order
=
new
Order
();
$order
=
new
Order
();
$order
->
primaryKey
=
3
;
$order
->
id
=
3
;
$order
->
setAttributes
([
'customer_id'
=>
2
,
'create_time'
=>
1325502201
,
'total'
=>
40.0
],
false
);
$order
->
setAttributes
([
'customer_id'
=>
2
,
'create_time'
=>
1325502201
,
'total'
=>
40.0
],
false
);
$order
->
save
(
false
);
$order
->
save
(
false
);
...
@@ -133,17 +133,17 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -133,17 +133,17 @@ class ActiveRecordTest extends ElasticSearchTestCase
// find all asArray
// find all asArray
$customers
=
Customer
::
find
()
->
asArray
()
->
all
();
$customers
=
Customer
::
find
()
->
asArray
()
->
all
();
$this
->
assertEquals
(
3
,
count
(
$customers
));
$this
->
assertEquals
(
3
,
count
(
$customers
));
$this
->
assertArrayHasKey
(
'primaryKey'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
ActiveRecord
::
PRIMARY_KEY_NAME
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'status'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'status'
,
$customers
[
0
]);
$this
->
assertArrayHasKey
(
'primaryKey'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
ActiveRecord
::
PRIMARY_KEY_NAME
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'status'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'status'
,
$customers
[
1
]);
$this
->
assertArrayHasKey
(
'primaryKey'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
ActiveRecord
::
PRIMARY_KEY_NAME
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'name'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'email'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
2
]);
$this
->
assertArrayHasKey
(
'address'
,
$customers
[
2
]);
...
@@ -161,16 +161,16 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -161,16 +161,16 @@ class ActiveRecordTest extends ElasticSearchTestCase
$this
->
assertEquals
(
'user3'
,
$customerName
);
$this
->
assertEquals
(
'user3'
,
$customerName
);
$customerName
=
Customer
::
find
()
->
where
([
'status'
=>
2
])
->
scalar
(
'noname'
);
$customerName
=
Customer
::
find
()
->
where
([
'status'
=>
2
])
->
scalar
(
'noname'
);
$this
->
assertNull
(
$customerName
);
$this
->
assertNull
(
$customerName
);
$customerId
=
Customer
::
find
()
->
where
([
'status'
=>
2
])
->
scalar
(
'primaryKey'
);
$customerId
=
Customer
::
find
()
->
where
([
'status'
=>
2
])
->
scalar
(
ActiveRecord
::
PRIMARY_KEY_NAME
);
$this
->
assertEquals
(
3
,
$customerId
);
$this
->
assertEquals
(
3
,
$customerId
);
// find by column values
// find by column values
$customer
=
Customer
::
find
([
'name'
=>
'user2'
]);
$customer
=
Customer
::
find
([
'name'
=>
'user2'
]);
$this
->
assertTrue
(
$customer
instanceof
Customer
);
$this
->
assertTrue
(
$customer
instanceof
Customer
);
$this
->
assertEquals
(
'user2'
,
$customer
->
name
);
$this
->
assertEquals
(
'user2'
,
$customer
->
name
);
$customer
=
Customer
::
find
([
'name'
=>
'user1'
,
'primaryKey'
=>
2
]);
$customer
=
Customer
::
find
([
'name'
=>
'user1'
,
ActiveRecord
::
PRIMARY_KEY_NAME
=>
2
]);
$this
->
assertNull
(
$customer
);
$this
->
assertNull
(
$customer
);
$customer
=
Customer
::
find
([
'primaryKey'
=>
5
]);
$customer
=
Customer
::
find
([
ActiveRecord
::
PRIMARY_KEY_NAME
=>
5
]);
$this
->
assertNull
(
$customer
);
$this
->
assertNull
(
$customer
);
$customer
=
Customer
::
find
([
'name'
=>
'user5'
]);
$customer
=
Customer
::
find
([
'name'
=>
'user5'
]);
$this
->
assertNull
(
$customer
);
$this
->
assertNull
(
$customer
);
...
@@ -182,7 +182,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -182,7 +182,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
// find count
// find count
$this
->
assertEquals
(
3
,
Customer
::
find
()
->
count
());
$this
->
assertEquals
(
3
,
Customer
::
find
()
->
count
());
$this
->
assertEquals
(
2
,
Customer
::
find
()
->
where
([
'or'
,
[
'primaryKey'
=>
1
],
[
'primaryKey'
=>
2
]])
->
count
());
$this
->
assertEquals
(
2
,
Customer
::
find
()
->
where
([
'or'
,
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
1
],
[
ActiveRecord
::
PRIMARY_KEY_NAME
=>
2
]])
->
count
());
// $this->assertEquals(6, Customer::find()->sum('id'));
// $this->assertEquals(6, Customer::find()->sum('id'));
// $this->assertEquals(2, Customer::find()->average('id'));
// $this->assertEquals(2, Customer::find()->average('id'));
// $this->assertEquals(1, Customer::find()->min('id'));
// $this->assertEquals(1, Customer::find()->min('id'));
...
@@ -199,7 +199,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -199,7 +199,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
'name'
=>
'user2'
,
'name'
=>
'user2'
,
'address'
=>
'address2'
,
'address'
=>
'address2'
,
'status'
=>
'1'
,
'status'
=>
'1'
,
'primaryKey'
=>
2
,
ActiveRecord
::
PRIMARY_KEY_NAME
=>
2
,
),
$customer
);
),
$customer
);
// indexBy
// indexBy
...
@@ -257,7 +257,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -257,7 +257,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
$orders
=
$customer
->
getOrders
()
->
where
([
'between'
,
'create_time'
,
1325334000
,
1325400000
])
->
all
();
$orders
=
$customer
->
getOrders
()
->
where
([
'between'
,
'create_time'
,
1325334000
,
1325400000
])
->
all
();
$this
->
assertEquals
(
1
,
count
(
$orders
));
$this
->
assertEquals
(
1
,
count
(
$orders
));
$this
->
assertEquals
(
2
,
$orders
[
0
]
->
primaryKey
);
$this
->
assertEquals
(
2
,
$orders
[
0
]
->
id
);
}
}
public
function
testFindEagerViaRelation
()
public
function
testFindEagerViaRelation
()
...
@@ -266,16 +266,16 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -266,16 +266,16 @@ class ActiveRecordTest extends ElasticSearchTestCase
$orders
=
Order
::
find
()
->
with
(
'items'
)
->
orderBy
(
'create_time'
)
->
all
();
$orders
=
Order
::
find
()
->
with
(
'items'
)
->
orderBy
(
'create_time'
)
->
all
();
$this
->
assertEquals
(
3
,
count
(
$orders
));
$this
->
assertEquals
(
3
,
count
(
$orders
));
$order
=
$orders
[
0
];
$order
=
$orders
[
0
];
$this
->
assertEquals
(
1
,
$order
->
primaryKey
);
$this
->
assertEquals
(
1
,
$order
->
id
);
$this
->
assertEquals
(
2
,
count
(
$order
->
items
));
$this
->
assertEquals
(
2
,
count
(
$order
->
items
));
$this
->
assertEquals
(
1
,
$order
->
items
[
0
]
->
primaryKey
);
$this
->
assertEquals
(
1
,
$order
->
items
[
0
]
->
id
);
$this
->
assertEquals
(
2
,
$order
->
items
[
1
]
->
primaryKey
);
$this
->
assertEquals
(
2
,
$order
->
items
[
1
]
->
id
);
}
}
public
function
testInsertNoPk
()
public
function
testInsertNoPk
()
{
{
$this
->
assertEquals
([
'primaryKey'
],
Customer
::
primaryKey
());
$this
->
assertEquals
([
ActiveRecord
::
PRIMARY_KEY_NAME
],
Customer
::
primaryKey
());
$pkName
=
ActiveRecord
::
PRIMARY_KEY_NAME
;
$customer
=
new
Customer
;
$customer
=
new
Customer
;
$customer
->
email
=
'user4@example.com'
;
$customer
->
email
=
'user4@example.com'
;
...
@@ -284,20 +284,25 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -284,20 +284,25 @@ class ActiveRecordTest extends ElasticSearchTestCase
$this
->
assertNull
(
$customer
->
primaryKey
);
$this
->
assertNull
(
$customer
->
primaryKey
);
$this
->
assertNull
(
$customer
->
oldPrimaryKey
);
$this
->
assertNull
(
$customer
->
oldPrimaryKey
);
$this
->
assertNull
(
$customer
->
$pkName
);
$this
->
assertTrue
(
$customer
->
isNewRecord
);
$this
->
assertTrue
(
$customer
->
isNewRecord
);
$customer
->
save
();
$customer
->
save
();
$this
->
assertNotNull
(
$customer
->
primaryKey
);
$this
->
assertNotNull
(
$customer
->
primaryKey
);
$this
->
assertNotNull
(
$customer
->
oldPrimaryKey
);
$this
->
assertNotNull
(
$customer
->
oldPrimaryKey
);
$this
->
assertNotNull
(
$customer
->
$pkName
);
$this
->
assertEquals
(
$customer
->
primaryKey
,
$customer
->
oldPrimaryKey
);
$this
->
assertEquals
(
$customer
->
primaryKey
,
$customer
->
oldPrimaryKey
);
$this
->
assertEquals
(
$customer
->
primaryKey
,
$customer
->
$pkName
);
$this
->
assertFalse
(
$customer
->
isNewRecord
);
$this
->
assertFalse
(
$customer
->
isNewRecord
);
}
}
public
function
testInsertPk
()
public
function
testInsertPk
()
{
{
$pkName
=
ActiveRecord
::
PRIMARY_KEY_NAME
;
$customer
=
new
Customer
;
$customer
=
new
Customer
;
$customer
->
primaryKey
=
5
;
$customer
->
$pkName
=
5
;
$customer
->
email
=
'user5@example.com'
;
$customer
->
email
=
'user5@example.com'
;
$customer
->
name
=
'user5'
;
$customer
->
name
=
'user5'
;
$customer
->
address
=
'address5'
;
$customer
->
address
=
'address5'
;
...
@@ -307,17 +312,23 @@ class ActiveRecordTest extends ElasticSearchTestCase
...
@@ -307,17 +312,23 @@ class ActiveRecordTest extends ElasticSearchTestCase
$customer
->
save
();
$customer
->
save
();
$this
->
assertEquals
(
5
,
$customer
->
primaryKey
);
$this
->
assertEquals
(
5
,
$customer
->
primaryKey
);
$this
->
assertEquals
(
5
,
$customer
->
oldPrimaryKey
);
$this
->
assertEquals
(
5
,
$customer
->
$pkName
);
$this
->
assertFalse
(
$customer
->
isNewRecord
);
$this
->
assertFalse
(
$customer
->
isNewRecord
);
}
}
public
function
testUpdatePk
()
public
function
testUpdatePk
()
{
{
$pk
=
[
'primaryKey'
=>
2
];
$pkName
=
ActiveRecord
::
PRIMARY_KEY_NAME
;
$pk
=
[
$pkName
=>
2
];
$orderItem
=
Order
::
find
(
$pk
);
$orderItem
=
Order
::
find
(
$pk
);
$this
->
assertEquals
(
2
,
$orderItem
->
primaryKey
);
$this
->
assertEquals
(
2
,
$orderItem
->
primaryKey
);
$this
->
assertEquals
(
2
,
$orderItem
->
oldPrimaryKey
);
$this
->
assertEquals
(
2
,
$orderItem
->
$pkName
);
$this
->
setExpectedException
(
'yii\base\InvalidCallException'
);
$this
->
setExpectedException
(
'yii\base\InvalidCallException'
);
$orderItem
->
primaryKey
=
13
;
$orderItem
->
$pkName
=
13
;
$orderItem
->
save
();
$orderItem
->
save
();
}
}
}
}
\ No newline at end of file
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