Laravel 學習總結二:get () 和 first () 的區別、@each () 的用法和新增外來鍵約束

Miachel_De_Santa發表於2020-06-20

get() 和 first() 的區別

get() 獲取的是一組 Model 資料,而 first()得到的是一個 Model 資料。
Laravel 裡的每一個 Model 資料,或者說每一條資料庫記錄取出來的時候都是用PHP的 stdClass 來封裝的,一條 Model 資料就是一個 stdClass(stdClass是一個沒有屬性和方法的空類,一般用來建立一個匿名物件或者將非物件型別轉換成物件,這樣我們就可以方便的新增和刪除屬性)。

  • get() 獲取到的是一個 collection 物件,其中的 items 屬性是一個陣列,每個陣列元素就是一個 stdClass 物件。

Michael 的 Laravel 學習總結二:get() 和 first() 的區別、blade 模板中 @each() 的用法 以及新增外來鍵約束

  • first() 獲取到的單個 stdClass 物件,因此我們可以直接在這個物件上面直接獲取各種屬性或者呼叫在 Model 裡定義的關係 (eloquent relationship)。
    Michael 的 Laravel 學習總結二:get() 和 first()的區別、blade 模板中 @each() 的用法 以及新增外來鍵約束

@each() 的用法

@each() 用來在 blade 模板中迴圈輸出內容,只需一行程式碼,樣式十分簡潔。

  • 使用 @foreach()
    @if(count($projects) > 0)
      @foreach($projects as $project)
          @include('projects._name')
      @endforeach
    @else
      @include('projects._empty')
    @endif
  • 使用 @each()
    @each('projects._name', $projects, 'project', 'projects._empty')

四個引數分別為:

  1. 迴圈的單個檢視。
  2. 需要迴圈的資料。
  3. 迴圈的單條資料在檢視中的變數名。
  4. 迴圈的資料為空時渲染的檢視。(可選項)

    新增外來鍵約束

    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    意為在該表中新增一個 user_id 欄位與 user 表中的 id 欄位關聯,並且在刪除時產生級聯,即 user 表中刪除 id 為n的記錄,當前表中所有 user_id 為n的記錄也會被一併聯動刪除。

執行遷移後:

Laravel 學習總結二:get () 和 first () 的區別、@each () 的用法和新增外來鍵約束

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章