joinWith implementation cleanup

This commit is contained in:
Carsten Brandt
2016-02-12 12:45:29 +01:00
parent 438be14a8e
commit ce35739469
4 changed files with 15 additions and 18 deletions

View File

@ -641,7 +641,6 @@ class ActiveQuery extends Query implements ActiveQueryInterface
if (!empty($child->join)) { if (!empty($child->join)) {
foreach ($child->join as $join) { foreach ($child->join as $join) {
$this->join[] = $join; $this->join[] = $join;
$this->populateAliases((array) $join[1]);
} }
} }
if (!empty($child->union)) { if (!empty($child->union)) {

View File

@ -851,7 +851,7 @@ class Query extends Component implements QueryInterface
*/ */
public static function create($from) public static function create($from)
{ {
$query = new self([ return new self([
'where' => $from->where, 'where' => $from->where,
'limit' => $from->limit, 'limit' => $from->limit,
'offset' => $from->offset, 'offset' => $from->offset,
@ -867,7 +867,5 @@ class Query extends Component implements QueryInterface
'union' => $from->union, 'union' => $from->union,
'params' => $from->params, 'params' => $from->params,
]); ]);
$query->_aliases = $from->_aliases;
return $query;
} }
} }

View File

@ -115,12 +115,12 @@ class Order extends ActiveRecord
->viaTable('order_item', ['order_id' => 'id']); ->viaTable('order_item', ['order_id' => 'id']);
} }
public function getBooksQuerysyntax() // public function getBooksQuerysyntax()
{ // {
return $this->hasMany(Item::className(), ['id' => 'item_id']) // return $this->hasMany(Item::className(), ['id' => 'item_id'])
->onCondition(['{{@item}}.category_id' => 1]) // ->onCondition(['{{@item}}.category_id' => 1])
->viaTable('order_item', ['order_id' => 'id']); // ->viaTable('order_item', ['order_id' => 'id']);
} // }
public function getBooksExplicitA() public function getBooksExplicitA()
{ {
@ -129,12 +129,12 @@ class Order extends ActiveRecord
->viaTable('order_item', ['order_id' => 'id']); ->viaTable('order_item', ['order_id' => 'id']);
} }
public function getBooksQuerysyntaxA() // public function getBooksQuerysyntaxA()
{ // {
return $this->hasMany(Item::className(), ['id' => 'item_id'])->alias('bo') // return $this->hasMany(Item::className(), ['id' => 'item_id'])->alias('bo')
->onCondition(['{{@item}}.category_id' => 1]) // ->onCondition(['{{@item}}.category_id' => 1])
->viaTable('order_item', ['order_id' => 'id']); // ->viaTable('order_item', ['order_id' => 'id']);
} // }
public function getBookItems() public function getBookItems()
{ {

View File

@ -555,7 +555,7 @@ class ActiveRecordTest extends DatabaseTestCase
{ {
return [ return [
['explicit'], // c ['explicit'], // c
['querysyntax'], // {{@customer}} // ['querysyntax'], // {{@customer}}
// ['applyAlias'], // $query->applyAlias('customer', 'id') // _aliases are currently not being populated // ['applyAlias'], // $query->applyAlias('customer', 'id') // _aliases are currently not being populated
// later getRelationAlias() could be added // later getRelationAlias() could be added
]; ];
@ -761,7 +761,7 @@ class ActiveRecordTest extends DatabaseTestCase
// alias is defined in the relation definition // alias is defined in the relation definition
// without eager loading // without eager loading
$query = Order::find() $query = Order::find()
->joinWith('bookItems', false)// TODO true ->joinWith('bookItems', false)
->joinWith('movieItems', false) ->joinWith('movieItems', false)
->where(['movies.name' => 'Toy Story']); ->where(['movies.name' => 'Toy Story']);
$orders = $query->all(); $orders = $query->all();