sdavis1902 / eloquent-vars
添加功能,允许在Laravel模型上保存额外的字段或Vars,无需为该字段指定特定的数据库列
1.0.4
2023-06-06 20:20 UTC
Requires
- php: ~5.6|~7.0|~8.0
Requires (Dev)
- phpunit/phpunit: ~4.0||~5.0
- squizlabs/php_codesniffer: ^2.3
This package is not auto-updated.
Last update: 2024-09-25 02:12:40 UTC
README
添加功能,允许在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; } }
注意,值存储为字符串,因此如果您保存一个整数,当您获取它时,它将是一个字符串。
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。