所以基本上我正在发送一个表单,在此表单中,我有3个字段。我需要user_id的另一个字段。因此,我决定通过后端而不是在HTML中进行操作,因为人们可以对其进行操作。
<form action="{{ route('events.store', Auth::user() ) }}" method="post">
但是每当我在dd($request)
中events.store
时,它就会告诉我:
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
1 => null
]
}
这是正确的,因为我的ID为1。
为了证明这一点,我使用了devtools来操纵表单动作并放置一个我自己的名为“ testing”的自定义值。像这样:
<form action="http://192.168.1.14/public/calendar?testing" method="post"">
这将输出
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
"testing" => null
]
}
如何访问ID?而我该如何使其变得无法操作?
问题2,如何使用该字段进行存储?我正在这样做:
Event::create(
$request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
])
);
我希望它像这样:
'user_id' => $request->user_id
也有必要
感谢您的帮助
答案 0 :(得分:4)
如果您需要当前登录的用户,则比通过表单传递或在URL中手动传递要容易得多。
您可以使用:
$request->id()
$request->user()->id
auth()->user()->id
auth()->id()
全部返回当前用户ID,只需确保您的路由受auth
保护,这意味着您为此使用了auth
中间件。
-添加
我将在事件的用户模型中添加一个关系,我想这是一对多的,所以:
public function events()
{
return $this->hasMany(Event::class);
}
然后将其存储在控制器中,如下所示:
auth()->user()->events()->create($request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
]));