Laravel學習筆記―簡單的文章增刪改查執行個體
這是第一次真正鼓搗laravel而學做的第一個簡單的執行個體,雖然這個執行個體很簡單,但是過程中也遇到不少的問題,可謂是曆經重重的修改,不斷調試才把整個執行個體的功能實現,因為本人為編程小白,所以在編程的過程中總會遇到很多邏輯上的問題,解決起來有時候真的是抓破頭皮都想不出個所以然,不知同樣學習過程中的你有木有這種問題存在呢?
好了,接下來是我學習的過程記錄。
1. 因為我們這裡是利用Laravel裡面的ORM模型來操縱資料庫的資料的,所以我們第一要先建立資料庫和表,這裡我以資料庫 -> web ,表 -> posts為例。
(1)利用navicai連結到資料庫裡面,建立資料庫web和表posts
(2)往表裡填充資料欄位,這裡是隨便填寫的,以便測試。
(3)資料庫建立完畢之後,接下來的一步就是建立ORM模型檔案:
其中use Illuminate\Database\Eloquent\Model;
是使用了上面路徑下的Mode類,以便Post類繼承Model類的屬性。
public $table = 'posts';
定義了資料庫的表為posts
public $primarykey = 'id';
定義了表的主鍵為id
public $timestamps = false;
設定時間戳記為false,這裡指的是不讓系統自動使用createtime_at 和 updatetime_at的功能
protected $dateFormat = 'U' ;
設定時間格式為UNIX的時間格式
protected $fillable = ['title', 'content','id'];
這裡地方尤為需要注意:因為這裡fillable是設定白名單的內容,倘若不設定該變數的內容的話,那麼後面的編輯和修改資料將會失敗,這是寫這個程式的過程遇到的一個比較值得注意的地方。
2.建立ORM模型之後,我們就可以根據我們的需求來構建我們這個文章的訪問路由,實現文章的成功訪問,以便映射到對應的視圖。
(1)建立index,show,save,edit,delete對應的路由表項,routes檔案的內容如下所示:
其中PostController@index等的控制器動作是控制器PostController裡面所定義的方法,實現文章的各項功能的實現調用。
3.定義PostController控制器的方法
(1)其中PostController跟Post模型一樣,都要繼承相應的父類,就是對應路徑下的Controller控制器。
class PostController extends Controller
(2)定義index顯示列表的方法
(3)定義$posts 模型執行個體,因為每一個模型執行個體都是查詢器,所以調用orderby()查詢,根據id欄位,以升序的方式顯示posts表的所以內容。
$posts = Post::orderBy('id', 'asc')->get();
(4)返回指定的視圖模板:post目錄下的index.blade.php,將$posts的查詢內容傳遞給posts數組
return view('post.index', ['posts' => $posts]);
(5)定義show顯示每一篇文章的內容方法
(6)擷取傳入的id值,然後再用get()函數將內容顯示出來
$post = Post::where('id', '=', $id)->get();
(7)返回show視圖模板
return view('post.show', ['posts' => $post]);
(8)定義edit編輯文章的方法
(9)isset()函數判斷id參數是否被設定,如果有則擷取其id,否則建立$post模型執行個體
if (isset($id)) {
$post = Post::find($id);
} else {
$post = new Post();
}
(10)返回edit視圖模板
return view('post.edit')->with('posts', $post);
(11)建立save方法
(12)設定$id =null是對應id可以為可選
public function save(Request $request, $id = NULL)
(13)如果id沒有被設定,則對應建立對應的id欄位值,然後讓其他輸入內容傳入建立新的資料,否則更新對應的欄位內容
if (isset($id)) {
//
Post::updateOrCreate(['id' => $id], $request->input());
} else {
Post::create($request->input());
}
(14)定義destroy刪除資料的方法
這個地方比較簡單,只要傳入對應的id欄位的內容,便可對應刪除,然後重新導向到顯示列表的posts/index顯示列表的路由上。
3.以上控制器的內容定義好之後,接下來便是簡單對應視圖模板的製作了。
(1)index顯示模板
(2)show顯示模板
(3)edit編輯和新增模板
5.顯示測試結果
(1)show測試:
(2)Edit測試
(3)Add測試
(4)Delete測試
問題解決:
1.出現資料無法添加刪除,報錯日誌顯示如下:
解決辦法:因為沒有開啟在Post模板中沒有定義$fillable白名單內容,所以所以的欄位無法更改資料,包括添加資料。
簡單的文章增刪改查執行個體到此完成,接下來還會繼續完善。