Laravel 5 中的複合鍵:探索解決方案
Laravel 的模型預設假設有一個名為「id」的主鍵。但是,在某些情況下,多個列可以充當複合鍵。本文探討了解決這項挑戰的技術。
了解複合鍵
當表使用兩列或更多列作為主鍵時,就會出現此問題,例如' id」和「語言id」。為了在Laravel 中對此進行建模,我們需要建立一種處理複合鍵的方法。 Trait
我們引入了一個名為 HasCompositePrimaryKey 的 PHP Trait 來增強 Eloquent的功能處理複合鍵的能力:
集成與模型namespace App\Model\Traits; // Import necessary classes trait HasCompositePrimaryKey { public function getIncrementing() { return false; } protected function setKeysForSaveQuery(Builder $query) { foreach ($this->getKeyName() as $key) { $query->where($key, '=', $this->$key); } return $query; } protected static function find($ids, $columns = ['*']) { $me = new self; $query = $me->newQuery(); foreach ($me->getKeyName() as $key) { $query->where($key, '=', $ids[$key]); } return $query->first($columns); } }
要將特徵與複合鍵模型集成,請添加以下內容:
其他更新// Define the primary key protected $primaryKey = ['id', 'language_id']; // Include the trait use Traits\HasCompositePrimaryKey;
對於增強的功能,提供了兩個額外的更新:
支援Model::find處理複合鍵。中的複合鍵。
以上是如何在 Laravel 5 模型中實作複合鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!