在我的代码中是否存在将登录用户保存在 laravel 中的错误代码

is there faulty code to save logged user in laravel in my code

我正在尝试将已登录的用户保存在付费 table 中。另一个功能 运行 正常,但我仍然无法将当前用户保存到 database/table。 到目前为止,我已经尝试在函数存储中使用此代码

$pay = new Pay;
$pay->cde_user = Auth::user()->id;

下面是我的 PayController 的详细代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Contract;
use App\Pay;
use App\User;
use Auth;

class PayController extends Controller
{
    public function index()
    {
        $pay = Pay::latest()->paginate(5);

        return view('pay.index',compact('pay'))
            ->with('i', (request()->input('page', 1) - 1) * 5);

    }

    public function create()
    {
        $contract = Contract::all();
        return view('pay.create', compact('contract'));
    }

    public function store(Request $request)
    {
        $request->validate([
            'cde_contract',
            'party1' => 'required',
            'party2' => 'required',
        ]);

        $pay = new Pay;
        $pay->cde_user = Auth::user()->id;

        Pay::create($request->all());

        return redirect()->route('pay.index')
                        ->with('success','STORED');

    }

    public function edit(Pay $pay)
    {
        return view('pay.edit',compact('pay'));
    }

    public function update(Request $request, Pay $pay)
    {
        $request->validate([
            'cde_contract',
            'party1' => 'required',
            'party2' => 'required',
        ]);

        $pay->update($request->all());
        return redirect()->route('pay.index')
                        ->with('success','PAY UPDATED');
    }

    public function destroy(Pay $pay)
    {
        $pay->delete();
        return redirect()->route('pay.index')
        ->with('success','PAY DELETED');
    }
}

我的存储和更新功能有错误吗? 如何使用 laravel 保存当前登录的用户。 我搜索过没有任何效果。

try to save user id to shown field

在存储函数中,您必须决定是否要使用 create() 方法或 new Pay 然后 save() 方法:

$pay = new Pay;
$pay->cde_user = Auth::user()->id;
$pay->cde_contract = $request->cde_contract;
$pay->party1 = $request->party1;
$pay->party2 = $request->party2;
$pay->save();

$data = $request->all();
$data['cde_user'] = Auth::user()->id;
Pay::create($data);

并且在更新函数中,您需要将用户->id 添加到您要更新的数据中:

$data = $request->all();
$data['cde_user'] = Auth::user()->id;
$pay->update($data);

是的,这是你在商店功能中犯的一个小错误

解决方案一:

 public function store(Request $request)
    {
        $request->validate([
            'cde_contract',
            'party1' => 'required',
            'party2' => 'required',
        ]);

        $pay = new Pay;
        $pay->cde_user = Auth::user()->id;

        $pay->save(); /* correction, remove Pay::create(... line from your code */

        return redirect()->route('pay.index')
                        ->with('success','STORED');

    }

方案二: 注意:确保在 Pay 模型可填充数组中定义所有字段。

 public function store(Request $request)
    {
        $request->validate([
            'cde_contract',
            'party1' => 'required',
            'party2' => 'required',
        ]);


        $data = $request->all();
        $data["cde_user"]  = Auth::user()->id;
        Pay::create($data);

        return redirect()->route('pay.index')
                        ->with('success','STORED');

    }