新博客未显示或存储在数据库中

发布于 2025-01-20 18:58:12 字数 3182 浏览 1 评论 0原文

一旦我删除博客,它就被彻底删除了。我可以制作一个新的,但它没有显示在网站或数据库中。这是我的 BlogController:

<?php

namespace App\Http\Controllers;

use App\Models\Blog;
use Illuminate\Http\Request;

class BlogController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
   
    public function index()
    {
        $blog = Blog::paginate(5);
        return view('blogs.index', compact('blog'))
            ->with('i',(request()->input('page',1)-1)*5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('blogs.create');
        
        Blog::create($request->all());
   
        return redirect()->route('blogs.index')
                        ->with('success','Blog created successfully.');
    }
  
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        $blog = new Blog;
       
        $blog->title = $request->title;
 
        $blog->description = $request->description;

        $blog->save();
        
        return redirect()->route('blogs.index');

    }
   
    /**
     * Display the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function show(Blog $blog)
    {
        return view('blogs.show', compact('blog'));
    }
   
    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function edit(Blog $blog)
    {
        return view('blogs.edit', compact('blog'));
    }
  
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Blog $blog)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        // $blog->title = $request->title;
 
       // $blog->description = $request->description;

        $blog->fill($request);
        
        // dd($blog);

        return redirect()->route('blogs.index')
                        ->with('success','Blog updated successfully');

    }
  
    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function destroy(Blog $blog)
    {
        $blog->delete();
  
        return redirect()->route('blogs.index')
                        ->with('success','Blog deleted successfully');
    }
   

}

问题显然是第 103 行,公共函数更新: $blog->fill($request); 它不存储在数据库中,也不在网页上可见/博客。我尝试删除该特定行,但它是相同的。没有任何改变。我不明白这可能是什么问题。有人可以帮忙吗?

Once I delete a blog, it is deleted completely. I can make a new one, but it does not show on the website or in the database. This is my BlogController:

<?php

namespace App\Http\Controllers;

use App\Models\Blog;
use Illuminate\Http\Request;

class BlogController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
   
    public function index()
    {
        $blog = Blog::paginate(5);
        return view('blogs.index', compact('blog'))
            ->with('i',(request()->input('page',1)-1)*5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('blogs.create');
        
        Blog::create($request->all());
   
        return redirect()->route('blogs.index')
                        ->with('success','Blog created successfully.');
    }
  
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        $blog = new Blog;
       
        $blog->title = $request->title;
 
        $blog->description = $request->description;

        $blog->save();
        
        return redirect()->route('blogs.index');

    }
   
    /**
     * Display the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function show(Blog $blog)
    {
        return view('blogs.show', compact('blog'));
    }
   
    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function edit(Blog $blog)
    {
        return view('blogs.edit', compact('blog'));
    }
  
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Blog $blog)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        // $blog->title = $request->title;
 
       // $blog->description = $request->description;

        $blog->fill($request);
        
        // dd($blog);

        return redirect()->route('blogs.index')
                        ->with('success','Blog updated successfully');

    }
  
    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function destroy(Blog $blog)
    {
        $blog->delete();
  
        return redirect()->route('blogs.index')
                        ->with('success','Blog deleted successfully');
    }
   

}

And the problem is apparently the 103th line, public function update: $blog->fill($request); It does not store in the database nor is it visible on the webpage/blog. I tried deleting that specific line, but it is the same. Nothing changes. I do not understand what the issue could be. Can someone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风来 2025-01-27 18:58:12

第一个选项 为了使 fill 方法正常工作,您必须在此之后调用 $blog->save()

$blog->fill($request); 
$blog->save();

此外,当您使用 fill 方法时,您正在批量分配值。默认情况下,Laravel 会保护您免受批量分配字段的影响。

打开您的 Blog.php 模型并将要批量分配的字段添加到数组 $fillable

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'title',
    'description',
];

第二个选项 是使用 update 方法(不要忘记从第一个选项开始在模型中的 $fillable 中添加字段,因为 update 方法也是批量分配字段):

$blog->update($request); 

第三个选项手动分配每个字段一对一就像您在 store 方法中所做的那样:

$blog->title = $request->title;
 
$blog->description = $request->description;

$blog->save();

1ST OPTION In order for the fill method to work, you must call $blog->save() after that.

$blog->fill($request); 
$blog->save();

Also when you use fill method you are mass assigning values. By default Laravel protects you from mass assigning fields.

Open your Blog.php model and add the fields you want to mass assign to the array $fillable

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'title',
    'description',
];

2ND OPTION is to use the update method (don't forget to also add fields in $fillable in the model from 1st option since update method is also mass assigning fields):

$blog->update($request); 

3RD OPTION manually assign each field one-by-one just like you did in the store method:

$blog->title = $request->title;
 
$blog->description = $request->description;

$blog->save();
我还不会笑 2025-01-27 18:58:12

fill 函数不会更新数据库中的数据。

此函数仅将值分配给 Blog 模型中 protected $fillable = ['title','description']; 中的属性。
使用update函数将数据更新到数据库。

$blog->fill($request); 
$blog->update();

The fill function dose not update data in database.

This function only assignment value to attribute in protected $fillable = ['title','description']; in Blog model.
Using update function to update data to database.

$blog->fill($request); 
$blog->update();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文