codewiser/inarticulate

Inarticulate不是Eloquent(Laravel Redis模型)

0.1.12 2020-10-26 13:27 UTC

This package is auto-updated.

Last update: 2024-09-26 22:28:55 UTC


README

Inarticulate是一个用于与Redis存储一起工作的Eloquent扩展。

Inarticulate模型与Eloquent模型完全相同。它有一个重要的区别——Redis中没有自增键。因此,Inarticulate有

public $incrementing = false;

Inarticulate Builder扩展了Eloquent Builder,但它只重写了一些方法——find、insert、update、delete和exists。所以请不要调用其他方法——这些方法不适用于Redis。

由于Inarticulate扩展了Eloquent模型,你可以使用属性访问器、修改器、类型转换、属性守卫等。

Redis键

Redis键由三个属性组成——哈希后的APP_KEY、$table属性和模型主键。Redis键将看起来像

d781b523ed68d90c599832956ff10ea9:article:243

Redis过期

设置正的protected $redisExpire值以设置模型的过期时间。

用法

为了防止Builder将未定义的属性解析为关系(这是不支持的,你知道)请定义$attributes数组中的默认属性值。

/**
 * @property mixed id
 * @property string title
 * @property string body
 */
class Article extneds \Codewiser\Inarticulate\Model
{
    protected $attributes = [
        'title' => null,
        'body' => null
    ];
}
$article = new Article();

$article->exists; // FALSE

$article->id = 1;
$article->title = "Title";
$article->save();

$article->exists; // TRUE
$article = Article::query()->findOrFail(1);

echo $article->title; 

Builder方法

大胆地使用这些模型和Builder方法

  • find
  • findOrFail
  • findOrNew
  • findMany
  • exists
  • refresh

获取所有记录

Model::all();
// or
Model::query()->get();