请求数组的附加值在 Laravel 控制器中消失



用户 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() ;

实际上,第二个片段肯定会起作用。第一个我没有测试,虽然它看起来不错。:)

最新更新