我在我的网站上有一个论坛,当我通过管理员权限访问它并编辑我未发布的帖子时,它将存储的数据从用户ID更改为我的管理员ID,因此更改了该帖子,就好像我创建了该帖子一样另一个人。我不知道如何更改它
因为这是我的第一个网站,所以我不确定如何更改代码。 我想我可能想要if语句,但是我已经有了一个构造。
AdminController:
public function storepost(){
{
$user = Auth::user();
// logged in?
if(!$user) {
request()->session()->flash('error', 'No permission!');
return redirect('/');
}
// New post or edit old one
if (request('id')) {
$post = Post::find(request('id'));
} else {
$post = new Post();
}
$dummypost = new Post();
$rules = $dummypost->rules();
// every form filled in ?
$validatedData = request()->validate($rules);
// save post
$post->title = $validatedData['title'];
$post->description = $validatedData['description'];
$post->user_id = $user->id;
$post->save();
//back to forum
return redirect('admin/forum');
}
我要编辑帖子,将其更改为ID 1(即admin)。但它在数据库中的ID为2。即使我编辑了它们,我也希望他们保持2
答案 0 :(得分:1)
一个简单的if check
就可以了,请注意如何在saving your post model
上方的行中将user_id
分配给当前登录的用户,我们需要限制该分配ID仅当用户不是Admin
时,因此将该行更改为此:
if (/* Check if $user is not admin */) {
$post->user_id = $user->id;
//or if you have relationship and it's one to one
$post->user()->associate($user);
}
$post->save();
或者,如果您不想在每次将帖子修改为user_id
时更新帖子的Non admin user
,则可以通过删除/注释该行来完全省略该行。
...
// $post->user_id = $user->id;
// Or completely remove it
...
答案 1 :(得分:1)
所以问题是当我编辑帖子时,它把用户改为我(我是管理员),而不是只编辑我想要的部分。我用if语句解决了这个问题:
if (!$user->admin){
$post->user_id = $user->id;
}
我的数据库中有一个布尔值,您可以通过admin查看。因此if语句只是说明如果用户不是admin,
将user_id作为user_id发布。
答案 2 :(得分:0)
正如您所说,您的ID 1是管理员,那么您可以输入如下条件。
if($user->id != '1'){
$post->user_id = $user->id;
}
仅当它不是管理员时,它才会更新user_id。如果您具有布尔“参数”,则代码可能看起来像这样
if($user->YOURPARAMETER == 1){ //I Assume parameter would be is_admin
$post->user_id = $user->id;
}