2

所以基本上我正在发送一个表格,在这个表格中我有 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

也有它是必需的

谢谢你的帮助

4

1 回答 1

5

如果您需要当前登录的用户,那么它比通过表单传递它或在 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'
    ]));
于 2019-09-19T14:06:21.617 回答