部落格未在資料庫中正確顯示或儲存
P粉111641966
2023-09-01 17:46:54
<p>一旦我刪除了一個博客,它就完全被刪除了。我可以創建一個新的博客,但它不會顯示在網站或資料庫中。這是我的BlogController:</p>
<pre class="brush:php;toolbar:false;"><?php
namespace App\Http\Controllers;
use App\Models\Blog;
use Illuminate\Http\Request;
class BlogController extends Controller
{
/*** 顯示資源清單。
*
* @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);
}
/*** 顯示建立新資源的表單。
*
* @return \Illuminate\Http\Response*/
public function create()
{
return view('blogs.create');
Blog::create($request->all());
return redirect()->route('blogs.index')
->with('success','部落格創建成功。');
}
/*** 在儲存中儲存新建立的資源。
*
* @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');
}
/*** 顯示指定的資源。
*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response*/
public function show(Blog $blog)
{
return view('blogs.show', compact('blog'));
}
/*** 顯示編輯指定資源的表單。
*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response*/
public function edit(Blog $blog)
{
return view('blogs.edit', compact('blog'));
}
/*** 更新儲存中的指定資源。
*
* @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','部落格更新成功');
}
/**
* 從儲存中刪除指定的資源。*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response
*/
public function destroy(Blog $blog)
{
$blog->delete();
return redirect()->route('blogs.index')
->with('success','部落格刪除成功');
}
}</pre>
<p>問題顯然出現在第103行,public function update:<code> $blog->fill($request);</code> 它既不儲存在資料庫中,也不在網頁/部落格中可見。我嘗試刪除那一行,但結果相同。沒有任何變化。我不明白問題可能是什麼。有人可以幫忙嗎? </p>
第一種選擇為了使
fill
方法起作用,您必須在此之後呼叫$blog->save()
。另外,當您使用
fill
方法時,您正在進行批次賦值。預設情況下,Laravel會保護您免受批次賦值欄位的影響。開啟您的
Blog.php
模型,並將要批次賦值的欄位加入到陣列$fillable
中第二個選擇是使用
update
方法(不要忘記在第一個選擇的模型中也加入欄位到$fillable
,因為update
方法也是批次賦值欄位):第三種選擇是手動逐一賦值每個字段,就像在
store
方法中所做的那樣: