首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel雄辩地支持MariaDb动态柱

Laravel雄辩地支持MariaDb动态柱
EN

Stack Overflow用户
提问于 2020-12-30 14:38:32
回答 2查看 855关注 0票数 7

对于在Maria-DBMySQL中支持的动态列,我们有JSON列类型。对于我们的一个项目,我们应该为Maria-DB (而不是Mysql)实现一个数据库。

使用包支持动态列。

如何可以覆盖EloquentLaravel中添加dynamic-columns。在将此特性添加到Yii中的ActiveRecord包中,该类可以覆盖ActiveRecord

Yii框架中实现类以在ActiveRecord ORM中支持:

  1. DynamicActiveRecord.php
  2. DynamicActiveQuery.php
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-10 20:18:38

我刚刚创建了用于使用雄辩和查询生成器处理MariaDB动态列的包。

要安装软件包,请运行以下命令:

代码语言:javascript
复制
composer require halalsoft/laravel-dynamic-column

您可以通过添加HasDynamicColumn特性开始使用包,并将Dynamic用作对模型的属性强制转换。

举个例子:

代码语言:javascript
复制
use Illuminate\Database\Eloquent\Model;
use Halalsoft\LaravelDynamicColumn\Dynamic;
use Halalsoft\LaravelDynamicColumn\HasDynamicColumn;

class MyModel extends Model
{
    use HasDynamicColumn;
    protected $casts
        = [
            'the_column' => Dynamic::class,
        ];
}

现在,您可以使用像json列一样的动态列,使用雄辩的或查询构建器:

代码语言:javascript
复制
$modelData = MyModel::find(1);

$columnData = $modelData->the_column;

$columnData['data1'] = 'value';
$columnData['data2'] = 'value2';


$modelData->the_column = $columnData;

$modelData->save();

还可以将数据字段创建为数组。

代码语言:javascript
复制
$newData = MyModel::create([
    'other_column' => 'this just another column data',
    'the_column' => ['data1'=>'value1','data2'=>'value2']
]);

要更新使用的json字段/键,可以在调用update方法时使用->操作符:

代码语言:javascript
复制
$page->update(['content->data1' => 'value1new']);

或者仍然可以使用普通数组更新整个列:

代码语言:javascript
复制
$page->update(['content' => ['data1'=>'value1new','data2'=>'value2new']]);

您可以使用其他方法(如updateOrCreate()firstOrCreate()等)将数组设置为数组。

此包还支持使用以下方法的查询生成器:

代码语言:javascript
复制
Model::query()->where('the_column->data1', 'value1')->first();

这个包仍然是新的,如果有任何问题或请求,请转到github问题

票数 5
EN

Stack Overflow用户

发布于 2020-12-30 21:53:01

可以为Model类中的列定义强制转换

代码语言:javascript
复制
//Model class

protected $casts = ['my_column' => 'array];

您可以将列的数据类型定义为文本(如果需要的话)或json,在定义了强制转换后,您将能够将列数据作为关联数组处理。

还有一个包可以在mariadb的迁移中添加json数据类型--它可能有助于https://github.com/ybr-nx/laravel-mariadb

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65508697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档