Laravel學習筆記――文章簡單增刪改查執行個體

來源:互聯網
上載者:User
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白名單內容,所以所以的欄位無法更改資料,包括添加資料。

簡單的文章增刪改查執行個體到此完成,接下來還會繼續完善。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.