1

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

$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 保存当前登录的用户。我没有搜索任何工作。

尝试将用户 ID 保存到显示的字段

4

2 回答 2

1

在 store 函数中,您必须决定是使用该create()方法还是使用new Paysave()方法:

$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);

在更新功能中,您需要将 user->id 添加到要更新的数据中:

$data = $request->all();
$data['cde_user'] = Auth::user()->id;
$pay->update($data);
于 2019-06-04T03:45:16.207 回答
0

是的,这是您在商店功能中犯的小错误

解决方案1:

 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');

    }

解决方案 2: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');

    }
于 2019-06-04T03:48:03.023 回答