sdavis1902/eloquent-vars

添加功能,允许在Laravel模型上保存额外的字段或Vars,无需为该字段指定特定的数据库列

1.0.4 2023-06-06 20:20 UTC

This package is not auto-updated.

Last update: 2024-09-25 02:12:40 UTC


README

Software License Total Downloads

添加功能,允许在Laravel模型上保存额外的字段或Vars,无需为该字段指定特定的数据库列

安装

通过Composer

$ composer require sdavis1902/eloquent-vars

添加服务提供者(对于5.5版本不是必需的)

sdavis1902\EloquentVars\EloquentVarsServiceProvider::class,

发布并运行迁移

$ php artisan vendor:publish --provider="sdavis1902\EloquentVars\EloquentVarsServiceProvider"
$ php artisan:migrate

使用方法

将特质添加到您的模型中

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use sdavis1902\EloquentVars\EloquentVarsTrait;

class Task extends Model {

    use EloquentVarsTrait;

现在您可以进行以下操作...

$task->setVar('temporary_field', 'The value');
$task->setVar('temporary_id', 1);

echo $task->getVar('temporary_field');

$task->deleteVar('temporary_field');

注意,上述操作需要模型对象具有id,因此它必须已经写入数据库。

如果您想使用更优雅的方法,可以使用以下方法。此外,以下方法也可以用于尚未插入数据库的新模型实例。

// saving new model and it's vars all at once
$task = new \App\Task;
$task->name = 'Some Task';

// now our vars
$task->vars->first_var = 'test';

$task->save();

// retreiving a model and accessing it's vars directly
$task = \App\Task::find(1);
echo $task->vars->first_var;

// save another var
$task->vars->second_var = 'another test';
$task->save();

// if you try to get a var that doesn't exist, it simply returns null
var_dump($task->vars->no_var);

此外,特质包括一个与vars的关系,允许您进行预加载。上述访问vars的方法使用此关系,因此您可以在预加载后像上面一样使用vars。

$tasks = \App\Task::with('ModelVars')->get();

foreach($tasks as $task){
    if($task->vars->first_var){
        echo $task->vars->first_var;
    }
}

注意,值存储为字符串,因此如果您保存一个整数,当您获取它时,它将是一个字符串。

贡献

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

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件