churakovmike/laravel-extended-builder

Laravel 扩展查询构建器

1.0 2020-04-22 15:39 UTC

This package is auto-updated.

Last update: 2024-09-23 01:43:50 UTC


README

此包是组织模型子查询的好方法。

要求

  • laravel 5.5+

入门

安装

该包可在 Packagist 上找到。

composer require churakovmike/laravel-extended-builder

用法

  1. 例如,您需要创建一个类,该类将从 ChurakovMike\ExtendedBuilder\ExtendedQuery 继承
<?php

namespace App;

use ChurakovMike\ExtendedBuilder\ExtendedQuery;

/**
 * Class UserQuery
 * @package App
 *
 * @property string $modelClass
 */
class UserQuery extends ExtendedQuery
{
    public function isActive()
    {
        return $this->where('status', true);
    }
    
    public function hasName($name)
    {
        return $this->where('name', $name);
    }
}
  1. 然后,您需要在主模型中添加一个方法来调用查询构建器。
<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

/**
 * Class User
 * @package App
 */
class User extends Authenticatable
{
    public static function where()
    {
        return new \App\UserQuery(get_called_class());
    }
}
  1. 现在,您可以从扩展查询调用子查询,同时也可以使用常规 Bulder 方法,请参见示例
$user = User::where()
        ->isActive()
        ->first();

函数调用链示例

$user = User::where()
        ->isActive()
        ->hasName('Mike')
        ->first();