buglerv / laravel-helpers
Laravel的一些辅助工具,如特质和其他...
1.1.1
2022-09-23 12:01 UTC
Requires
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- phpunit/phpunit: ^9.5.10
README
为Laravel项目之间共享的一些文件。
Buglerv\LaravelHelpers\Traits\ChainableMethods
特质用于将类方法链接起来,以便按顺序调用。
class A { use \Buglerv\LaravelHelpers\Traits\ChainableMethods; protected $count = 2; public function sub() { return --$this->count; } public function add() { return ++$this->count; } public function echo() { echo $this->count; return $this->count; } } $a = new A; // Объединения с OR var_dump($a->subOrEcho()); // int(1) var_dump($a->subOrEcho()); // 0 bool(false) // Объединение с AND var_dump($a->addAndEcho()); // 1 int(1) var_dump($a->subAndEcho()); // bool(false) // Так же есть ключевые слова True и False var_dump($a->addAndFalse()); // bool(false) var_dump($a->subOrTrue()); // bool(true)
Buglerv\LaravelHelpers\Eloquent\GroupEagerLoading
用于手动加载Eloquent模型的关系。
例如,有一个名为 Project 的模型,它有两个与 Person 模型的关系,通过方法 frontendProgrammer 和 backendProgrammer。通过 Project::load() 可以加载这两个关系,但每个关系都将通过单独的数据库查询加载。这样可以通过一个查询实现。
$models = Project::all(); \Buglerv\LaravelHelpers\Eloquent\GroupEagerLoading::load($models,Person::class,[ 'frontendProgrammer' => 'frontend_programmer_id', 'backendProgrammer' => 'backend_programmer_id', ]);
可以加载 软删除 模型
\Buglerv\LaravelHelpers\Eloquent\GroupEagerLoading::loadTrashed(...);
可以加载具有额外关系的模型
\Buglerv\LaravelHelpers\Eloquent\GroupEagerLoading::loadWith(...,'projects');
或者结合两种方法
\Buglerv\LaravelHelpers\Eloquent\GroupEagerLoading::loadTrashedWith(...,'projects');