2015-10-30 3 views
3

У меня есть 3 стола: требования, товары и их получение. Чтобы связать запросы и получать, я использую следующую схему для таблицы приема вместо сводной таблицы (т.е. require_receive). Пусть экземпляр таблицы приема выглядит как показано ниже.Расчет суммы в сводной таблице в laravel 5

|**id** | **demand_id** | **receive_note** | **receive_date** | 
|R1  |D2    |     |10/29/2015  | 
|R2  |D2    |     |10/30/2015  | 

сводной таблицы demand_product выглядит, как показано ниже.

|**demand_id** |**product_id** |**demand_quantity** | 
|D2   |P1    |100     | 
|D2   |P2    |500     | 
|D2   |P3    |1000    | 

Чтобы проследить, получающих продукты спроса, я сделал сводную таблицу product_receive, который выглядит, как показано ниже.

|**receive_id** |**product_id** |**receive_quantity** | 
|R1    |P1    |50     | 
|R2    |P1    |40     | 
|R2    |P2    |500     | 

Здесь я пытаюсь отследить частичный прием спроса. То, что я на самом деле хочу, состоит в том, чтобы найти общее количество приема отдельного продукта определенного идентификатора спроса, чтобы результат можно было использовать для контроля количества приема (например, total_received_quantity) в представлениях.

Например:

for demand id D2, 
total_receive_quantity of P1=90 
total_receive_quantity of P2=500 
total_receive_quantity of P3=0 

Как я могу добиться выше ответа в Laravel? Спасибо заранее.

ответ

-1

Это должно быть возможно сделать это так:

class Demand extends Model 
{ 
    public function receives() { 
     return $this->hasMany('App\Receive') 
    } 

    public function total_received_quantity($product_id) { 
     $tally = 0; 
     $receives = $this->receives; 
     foreach ($receives as $receive) { 
      $product_receives = $receive->product_receives; 
      foreach ($product_receives as $product_receive) { 
       if ($product_receive->product->id == $product_id){ 
        $tally = $tally + $product_receive->product->quantity; 
       } 
      } 
     } 
     return $tally; 
    } 
} 

class Receive extends Model 
{ 
    public function product_receives() { 
     return $this->hasMany('App/Product_receive'); 
    } 
} 

class Product_receive extends Model 
{ 
    public function product() { 
     return $this->belongsTo('App\Product'); 
    } 
} 
Смежные вопросы