yuptogun / laravel-model-traits
我自己使用过的一些实用特性和接口
dev-main
2021-03-30 06:52 UTC
Requires
- illuminate/database: ^8.34
This package is auto-updated.
Last update: 2024-09-29 05:43:08 UTC
README
我用这些代码片段帮助了自己。希望其他人也能得到帮助。
快速开始:示例
激活
class Membership extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\ActivatableModel { use \Yuptogun\LaravelModel\Traits\HasActivationAttributes; public function getStartsAtFieldAttribute() { return 'membership_begins_at'; } public function getEndsAtFieldAttribute() { return 'membership_expires_at'; } } if (!$user->membership->is_active) { throw new \Exception('please get a membership!'); }
旋转值
class User extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\ValueRotatingModel { use \Yuptogun\LaravelModel\Traits\HasRotatingAttributes; public function getRotatingFieldsAttribute() { return [ 'hidden' => [1, 0], ]; } } if ($user->switchField('hidden')) { return 'switched visibility!'; }
可排序
class Episode extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\SortableModel { use \Yuptogun\LaravelModel\Traits\HasSortableOrderAttribute; public function getSortableOrderFieldAttribute() { return 'episode_sort'; } } $episode_sort = request()->input('episode'); if ((new Episode)->sortBySortableOrder($episode_sort)) { return 'reordered!'; }
递归模型
class Curriculum extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\RecursiveModel { use \Yuptogun\LaravelModel\Traits\IsRecursiveModel; public function getCteKeyChildAttribute() { return 'crcl_no'; } public function getCteKeyParentAttribute() { return 'p_crcl_no'; } } if ($curri->allParents()->grandParents()->first()->crcl_no == 2) { return 'Second grade curriculum'; }