iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
1

本系列文的環境狀態,可點擊此連結後花園環境參考

看倌你有不小心掉進這陷阱了嗎?

需要我拉你一把嗎?(笑)

圖片來源:世界一可愛いレムの画像見つけた

現階段可能還感覺不出異樣,之後可能就會發現這個痛點了。
例如: Eloquent Model 會找不到對應的資料表。

命名注意事項

因爲 Eloquent Model 若沒有特別預設,會自動將 Model 自身類別名稱,對照 Migration 的資料表時,會採用" snake case、字母小寫、複數"的名稱方式去連結對應。

服用 Migration 及 Eloquent Model 時,需要注意的命名規則

  • Migration 檔名,運用規則:
    • 全英文字小寫
    • 使用英文的複數詞(s、es)
    • 蛇底式命名(snake case)
      • 例:創建 flower 的 Migration 檔,會取名爲 create_flowers_table
  • Eloquent Model 檔名,運用規則:
    • 英文單字首字大寫,大駝峰式命名(Upper Camel Case)
    • 使用英文的單數詞
      • 例:創建 flower 的 Eloquent Model檔,會取名為Flower

駝峰式及蛇底式命名介紹

  • 大駝峰式命名法(upper camel case),或稱帕斯卡命名法(Pascal Case):
    每一個單字的首字母都採用大寫字母,例如:FlowerName、TreeName、GrassName

  • 小駝峰式命名法(lower camel case):
    第一個單字以小寫字母開始;第二個單字的首字母大寫,例如:flowerName、treeName、grassName。

  • 蛇形式命名法(snake case):
    單字間會使用下劃線( _ )區隔連接,例如:" Love_flower_Name "

    • 大蛇式(upper snake case):所有字都大寫,並用 _ 區隔。
      例:LOVE_FLOWER_NAME、LIKE_TREE_NAME
    • 小蛇式(lower snake case):所有字都小寫,並用 _ 區隔。
      例:love_flower_name 、like_tree_name

真得想用原本命名的資料表名,可以試試這方法

如果已經建好資料表名稱,但跟 Eloquent model 的名稱不對應,可考慮使用這個方法
在 Model 檔內,自定義對應的 table 名稱。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flower extends Model
{
    /**
     * The table associated with the model.
     * @var string
     */
    protected $table = 'love_flower';     
    // 在 '' 內輸入你想要對應的資料表名稱
}

加碼介紹(其他命名方式)

  • 烤肉串式(kebab case):
    單字間使用連字符( - )區隔連接,所有單字都小寫,例如:" love-flower-name "

  • 匈牙利命名法(Hungarian notation),或稱HN命名法:
    由屬性、類型、描述組成名稱,前綴代表了變數的實際數據類型。

例如:

int iUserName;      // i 爲 int 類型縮寫 
var bInitLogin;     // b 爲 boolean 布林值縮寫

對於 Migration 及 Eloquent Model 的命名是否有更加瞭解呢?
使用時,再請看倌們多加注意囉!

對於命名需注意的部份或想更瞭解,請參照下方連結:
❁ Laravel官方-Eloquent: Getting Started
❁ 程序變量命名的幾種叫法
❁ 清風軒-編程命名規則
❁ 維基百科-駝峰式大小寫
❁ Laravel Migration、Model、DB物件 相關操作 (濃縮)


上一篇
✾後花園D17✾-我們要搬去哪裡呢?(Migration入門介紹)
下一篇
✾後花園D19✾- 不是僞娘,是僞 Model ( Eloquent Model 觀念篇 )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言