Reputation: 139
Trying to save one-to-one relationship
between Expense
and ExpenseCategory
and got error like above
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, null given, called in /home/z3r0/Desktop/Kiyoi/laravel-kiyoi/app/Http/Controllers/V1/ExpenseController.php on line 88
i tried google
and everything, but still no luck.
In Expense Model
public function expense_category()
{
return $this->hasOne(\App\ExpenseCategory::class);
}
In ExpenseCategory Model
protected $fillable = ['expense_id', 'code', 'name', 'description'];
public function expense()
{
return $this->belongsTo(\App\Expense::class, 'expense_id');
}
In ExpenseController
public function update(Request $request, $id)
{
$request->validate([
'date' => 'required',
'amount' => 'required',
]);
$expense = Expense::findOrFail($id);
$expense->user_id = auth()->user()->id;
$expense->date = $request->date;
$expense->description = $request->description;
$expense->amount = $request->amount;
$expense->expense_for = $request->expense_for;
$expense->save();
$expense_category = \App\ExpenseCategory::findOrFail($id);
$expense_category->name = $request->name;
$expense->expense_category()->save($request->expense_category);
return response()->json([
'updated' => true,
]);
}
I'll appreciate of all ur help.. Thanks...
Upvotes: 0
Views: 1850
Reputation: 62308
You have a typo. You're passing $request->expense_category
into the save()
method, but you meant to pass in $expense_category
.
Change
$expense->expense_category()->save($request->expense_category);
to
$expense->expense_category()->save($expense_category);
Upvotes: 1