用户 ID 存在 在执行创建之前。 所以它在第一个中会导致错误。 我用另一种方式做到了。下面的第二个工作正常。 我想知道为什么第一个是错误的并且它消失了。
//Error
public function store(ContactRequest $request)
{
$request->user_id = $request->user()->id;
Log::debug($request->user()->id);
Log::debug($request);
Contact::create($request->all());
}
//还行
public function store(ContactRequest $request,Contact $contact)
{
$request->user_id = $request->user()->id;
$contact->title = $request->title;
$contact->body = $request->body;
$contact->user_id = $request->user()->id;
$contact->save();
}
the log of the first one is here.
What happened to the user_id!?
[2020-05-30 15:59:10] local.DEBUG: 59
[2020-05-30 15:59:10] local.DEBUG: array (
'_token' => 'gGWuxW6C2JRSCYDuCAC9HauynGclKQEQB7qUh6Rw',
'title' => 'TITLE',
'body' => 'MESSAGE',
'action' => 'SEND',
)
联系人是模型类。 联系请求在这里。
class ContactRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => 'required|max:100',
'body' => 'required|max:1000'
];
}
public function attributes() {
return [
'title' => 'title',
'body' => 'CONTENTS'
];
}
}
您必须使用$request->merge(['user_id'=>$request->user()->id])
. 另一个提示是,您可以简单地使用Auth::user()->id
,它也返回当前用户的用户ID。
如果你这样做会怎样:
Auth::user() - >contact($request->all()) - >save() ;
或者也可以作为实验:
$contact = new Contact($request->all()) ;
$contact->user_id = Auth::user() - >id;
$contact->save() ;
实际上,第二个片段肯定会起作用。第一个我没有测试,虽然它看起来不错。:)