I have three model 1.Fertilizer, 2. Fertilizer Stock, 3.Fertilizer Sale. 2 & 3 have foreign key relation(fertilizer_id) & mysql quantity column . I want to calculate individual Fertilizer stock quantity in my fertilizer model and append with fertilizerController in inertia index page. What's Wrong with my code?
Controller
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index( Request $request)
{
return Inertia::render('Fertilizers/Index', [
'fertilizers' => Fertilizer::with('stocks')
->filter($request->all())
->sorted()
->paginate()
->withQueryString(),
'query' => $request->all(),
]);
}
Model
protected $appends = ['stocks'];
/**
* Determines one-to-many relation
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function units()
{
return $this->belongsTo(Unit::class);
}
Stock Function
public function getStocksAttribute(){
$stock_quantity = FertilizerStock::where(['fertilizer_id', $this->id])->sum('quantity');
$sale_quantity = FertilizerSell::where(['fertilizer_id', $this->id])->sum('quantity');
return $stock_quantity - $sale_quantity;}
Add this on your Fertilizer Model.
public function getStockAttribute()
{
$fertilizerId= $this->id;
$fertilizerStock = FertilizerStock::where('fertilizer_id',$fertilizerId)->sum('quantity');
$fertilizerSells = FertilizerSell::where('fertilizer_id',$fertilizerId)->sum('quantity');
return $fertilizerStock-$fertilizerSells;
}