2016-05-04 16 views
0

我有兩個表格 - 各方,賬單。在派對桌中,派對是party_partyname,parties_district。在賬單表中它有字段bill_partyname,billamount,billdate。 我想看到的查詢作爲當加入一個具有sum函數的列時獲取(未設置)yii2

SELECT parties_district,parties_partyname, COALESCE(sum(bills.billamount),0) as sale FROM `parties` left join bills on parties.parties_partyname = bills.bills_partyname group by parties.parties_partyname 

我的搜索模型看起來像 -

$query = Parties::find() 
     ->select('parties.parties_district, parties.parties_partyname, bills.billamount as sale') 
     ->from('parties') 
     ->leftJoin('bills',['bills.bills_partyname' => 'parties.parties_partyname']) 
     ->groupBy('parties.parties_partyname'); 

締約方的index.php

'parties_partyname', 
     'parties_district', 

    [ 
     'attribute' => 'sale', 
     'value' => 'sale' 
    ], 

我在各方模型添加public $sale

回答

1

如果你想使用你所顯示的activeQuery,你應該使用

$query = Parties::find() 
    ->select('parties.parties_district as parties_district, 
     parties.parties_partyname as parties_partyname, 
     COALESCE(sum(bills.billamount),0) as sale ') 
    ->from('parties') 
    ->leftJoin('bills',['bills.bills_partyname' => 'parties.parties_partyname']) 
    ->groupBy('parties.parties_partyname'); 

否則,你可以使用一個簡單的(ActiveRecord的)findBySql()(這個給你dataProvider中查詢)

$sql = 'SELECT 
       parties.parties_district as parties_district, 
       parties.parties_partyname as parties_partyname, 
       COALESCE(sum(bills.billamount),0) as sale 
      FROM `parties` 
      left join bills on parties.parties_partyname = bills.bills_partyname 
      group by parties.parties_partyname' 
    $query = Parties::findBySql($sql); 

如果改用

$models = Parties::findBySql($sql)>all(); 

你的所有模型

對於網格視圖如果您的值與屬性值相同使用

'parties_partyname', 
    'parties_district', 
    'sale', 

沒有價值=>

+0

我使用activeQuery但要在輸出售列「未設置」。 – Tanmay

+0

嘗試使用沒有賦值的銷售。我有更新的答案.. – scaisEdge

+0

仍然是同樣的結果。 – Tanmay