buglerv/laravel-helpers

Laravel的一些辅助工具,如特质和其他...

1.1.1 2022-09-23 12:01 UTC

This package is auto-updated.

Last update: 2024-09-29 05:50:08 UTC


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 模型的关系,通过方法 frontendProgrammerbackendProgrammer。通过 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');