在 Laravel 中,模型(Model)中的一些常用方法包括 fillable
、guarded
、timestamps
、primaryKey
等,它們用於定義模型的屬性、保護屬性、自動維護時間戳和主鍵等。下面我逐個介紹這些方法:
-
fillable:
fillable
屬性用於定義可以批次賦值的屬性(欄位),也就是允許使用者透過模型的create
或fill
方法來設定的屬性。如果你在模型中使用了fillable
屬性,那麼只有在fillable
中列出的屬性才能夠透過批次賦值來設定。這有助於防止潛在的 Mass Assignment 攻擊。例如:protected $fillable = ['name', 'email', 'password'];
-
guarded:
guarded
屬性用於定義不可以批次賦值的屬性(欄位),也就是需要保護的屬性。如果你在模型中使用了guarded
屬性,那麼除了在guarded
中列出的屬性之外,所有其他屬性都可以透過批次賦值來設定。你可以將guarded
屬性設定為空陣列(protected $guarded = [];
),這樣所有屬性都可以進行批次賦值。不過這種方式要謹慎使用,因為可能存在安全風險。例如:protected $guarded = ['admin'];
-
timestamps:
timestamps
屬性用於控制模型是否自動維護時間戳,包括created_at
和updated_at
。預設情況下,Laravel 會自動為每個模型新增這兩個時間戳欄位,但如果你不需要這些時間戳欄位,可以將timestamps
屬性設定為false
。例如:public $timestamps = false;
-
primaryKey:
primaryKey
方法用於獲取模型的主鍵欄位名稱。預設情況下,Laravel 假定主鍵欄位名為id
,但你也可以在模型中重寫primaryKey
方法來指定其他主鍵欄位名。例如:protected $primaryKey = 'user_id';
這些方法在定義模型時非常有用,它們允許你更加靈活地控制模型的屬性、保護屬性和時間戳等行為。