【发布时间】:2021-06-20 17:50:41
【问题描述】:
我有一个产品表和库存表。存储有关产品销售和购买的库存表数据。我需要根据购买和销售显示每个产品的库存。所以我需要在 vuejs 模板中调用一个带有产品 ID 的模型函数来计算产品的库存数量。如何做到这一点,或者有没有其他方法?请帮帮我。
我的产品控制器功能是-
public function stock() {
return Product::with(['category', 'stock'])->get();
}
我的产品模型功能是-
public function stock($id){
$purchase_quantity = Stock::where([['product_id', $id], ['stock_type', 'purchase']])->sum('quantity');
$sale_quantity = Stock::where([['product_id', $id], ['stock_type', 'sale']])->sum('quantity');
return $purchase_quantity - $sale_quantity;
}
我的 vuejs 模板代码在每次 v-for 迭代中我想调用模型函数-
<tr v-for="product in products.data" :key="product.id">
<td>{{ product.id }}</td>
<td>{{ product.category.name }}</td>
<td>{{ product.name }}</td>
<td>{{ product.unit }}</td>
<td>{{ product.stock(product.id) }}</td>
</tr>
这里 product.stock(product.id) 不起作用。 它显示了错误- 函数 App\Models\Product::stock() 的参数太少,通过了 0
【问题讨论】:
-
从您的方法定义
stock($id)中删除id参数,然后在您的方法中使用$this->id而不是$id。['product_id', $id]=>['product_id', $this->id]
标签: javascript php laravel vue.js