sfneal / models

扩展功能的Eloquent模型包装器

4.0.0 2024-05-01 21:33 UTC

README

Packagist PHP support Latest Version on Packagist Build Status Quality Score Total Downloads

扩展功能的Eloquent模型包装器。

安装

您可以通过composer安装此包

composer require sfneal/models

用法

模型

AbstractModelAbstractPivotAbstractAuthenticatable可以作为父类使用,就像Eloquent的ModelPivotAuthenticatable一样使用。AbstractModel使用Sfneal\Builders\QueryBuilder作为默认的Eloquent查询构建器(见sfneal/builders)。

class YourModel extends AbstractModel
{
    protected $table = 'your_model';
    protected $primaryKey = 'your_model_id';
    
    protected $fillable = [
        'your_model_id',
        //
    ];
} 

扩展AbstractModel类的模型将能够访问许多扩展模型现有功能的方法。

  • ‘新’- 方法用于确定模型是否为新(对于具有CMS的应用程序很有用)或模型有多新
  • ‘更改’- 方法用于检查模型是否最近创建、更新、删除或未更改
// Create a new Model record
$model = YourModel::query()->create($data);

// returns true
$model->wasCreated();

// Update the Model
$model->update([
	'some_attribute' => 'blue'
]);	

// returns false
$model->wasCreated();

// returns true
$model->wasUpdated();

构建器

通过覆盖内置的新EloquentBuilder()和query()方法,将自定义QueryBuilder添加到任何Eloquent模型中。

use Illuminate\Database\Eloquent\Builder;
use Sfneal\Builders\QueryBuilder;

class ExampleModel extends Model
{
    /**
     * Query Builder.
     *
     * @param $query
     * @return QueryBuilder
     */
    public function newEloquentBuilder($query)
    {
        return new QueryBuilder($query);
    }
    
    /**
     * Query Builder method for improved type hinting.
     *
     * @return QueryBuilder|Builder
     */
    public static function query()
    {
        return parent::query();
    }
}

测试

composer test

变更日志

请参阅CHANGELOG以获取更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件stephen.neal14@gmail.com与联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。

PHP包模板

此包使用PHP包模板生成。