在我的代码中是否存在将登录用户保存在 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');
}
我正在尝试将已登录的用户保存在付费 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');
}