Laravel中的Model

Laravel自学开发發表於2024-05-15

在 Laravel 中,模型(Model)中的一些常用方法包括 fillableguardedtimestampsprimaryKey 等,它們用於定義模型的屬性、保護屬性、自動維護時間戳和主鍵等。下面我逐個介紹這些方法:

  1. fillable: fillable 屬性用於定義可以批次賦值的屬性(欄位),也就是允許使用者透過模型的 createfill 方法來設定的屬性。如果你在模型中使用了 fillable 屬性,那麼只有在 fillable 中列出的屬性才能夠透過批次賦值來設定。這有助於防止潛在的 Mass Assignment 攻擊。例如:

    protected $fillable = ['name', 'email', 'password'];
    
  2. guarded: guarded 屬性用於定義不可以批次賦值的屬性(欄位),也就是需要保護的屬性。如果你在模型中使用了 guarded 屬性,那麼除了在 guarded 中列出的屬性之外,所有其他屬性都可以透過批次賦值來設定。你可以將 guarded 屬性設定為空陣列(protected $guarded = [];),這樣所有屬性都可以進行批次賦值。不過這種方式要謹慎使用,因為可能存在安全風險。例如:

    protected $guarded = ['admin'];
    
  3. timestamps: timestamps 屬性用於控制模型是否自動維護時間戳,包括 created_atupdated_at。預設情況下,Laravel 會自動為每個模型新增這兩個時間戳欄位,但如果你不需要這些時間戳欄位,可以將 timestamps 屬性設定為 false。例如:

    public $timestamps = false;
    
  4. primaryKey: primaryKey 方法用於獲取模型的主鍵欄位名稱。預設情況下,Laravel 假定主鍵欄位名為 id,但你也可以在模型中重寫 primaryKey 方法來指定其他主鍵欄位名。例如:

    protected $primaryKey = 'user_id';
    

這些方法在定義模型時非常有用,它們允許你更加靈活地控制模型的屬性、保護屬性和時間戳等行為。

相關文章