繁体   English   中英

传递给 Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany::save() 的参数 1 必须是 Illuminate\\Database\\Eloquent\\Model 的实例,

[英]Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model,

试图save one-to-one relationship ExpenseExpenseCategory之间save one-to-one relationship并得到上述错误

传递给 Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany::save() 的参数 1 必须是 Illuminate\\Database\\Eloquent\\Model 的实例,给定 null,在 /home/z3r0/Desktop/Kiyoi/laravel-kiyoi/app 中调用/Http/Controllers/V1/ExpenseController.php 第 88 行

我尝试了google和一切,但仍然没有运气。

费用模型

    public function expense_category()
    {
        return $this->hasOne(\App\ExpenseCategory::class);
    }

在费用类别模型中

    protected $fillable = ['expense_id', 'code', 'name', 'description'];

    public function expense()
    {
        return $this->belongsTo(\App\Expense::class, 'expense_id');
    }

在费用控制器中

    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,
        ]);
    }

我会感谢你的帮助...谢谢...

你有一个错字。 您将$request->expense_category传递给save()方法,但您打算传递$expense_category

改变

$expense->expense_category()->save($request->expense_category);

$expense->expense_category()->save($expense_category);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM