当前位置: 首页 > 面试题库 >

Laravel Eloquent支持MariaDb动态列

陆敏学
2023-03-14
问题内容

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

使用包支持“ 动态列”yii2-dynamic-ar

如何可以覆盖Eloquentorm中Laravel进行添加dynamic- columns。在Yii将此功能添加到ActiveRecord此类中的包中,可以覆盖ActiveRecord该类

Yii框架中支持ActiveRecordORM的实现类:

  1. DynamicActiveRecord.php
  2. DynamicActiveQuery.php

问题答案:

我刚刚使用雄辩的查询构建器创建了用于处理MariaDB动态列的软件包。

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

composer require halalsoft/laravel-dynamic-column

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

一个例子:

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列):

$modelData = MyModel::find(1);

$columnData = $modelData->the_column;

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


$modelData->the_column = $columnData;

$modelData->save();

您也可以将数据字段创建为数组

$newData = MyModel::create([
    'other_column' => 'this just another column data',
    'the_column' => ['data1'=>'value1','data2'=>'value2']
]);

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

$page->update(['content->data1' => 'value1new']);

或者您仍然可以使用常规数组更新整个列:

$page->update(['content' => ['data1'=>'value1new','data2'=>'value2new']]);

可以使用作为阵列设置其他方法等updateOrCreate()firstOrCreate()等。

该软件包还支持使用以下内容的查询构建器:

Model::query()->where('the_column->data1', 'value1')->first();

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



 类似资料:
  • 我试图在XAMP中创建一个json数据库,在使用phpmyAdmin时,它显示我正在使用mariaDB,但在我的它显示在端口3306上运行。我正在使用Laravel 5.4 framework创建数据库,下面是我尝试执行的迁移: 现在,在执行此操作时,我遇到以下错误: SQLSTATE[42000]:语法错误或访问冲突: 1064你有一个错误在您的SQL语法;检查手册,对应于您的MariaDB服务

  • 问题内容: 我想知道是否可以在Go中动态创建变量? 我在下面提供了一个伪代码来说明我的意思。我将新创建的变量存储在一个切片中: 在循环的最后,切片应包含变量:variable1,variable2 … variable9 问题答案: Go没有动态变量。大多数语言中的动态变量都实现为Map(哈希表)。 因此,您可以在代码中包含以下地图之一,该地图可以完成您想要的操作 这是执行您的操作的Go代码 ht

  • 写了一个组件,h5、模拟器能正常显示,但是打包成Android包安装到手机上会导致整个页面都白屏了,没法正常显示,已经定位到就是该组件的问题,把组件改写去掉动态插槽打包后就没问题,但是代价就是组件通用性不高,可能需要根据业务定制不同的组件(绝大部分代码差不多),请问有没有啥办法处理这问题? tags 如下: 使用方式: 更新后的使用方式: 组件: 使用: 仍然不行,显示的始终是组件里面的默认插槽内

  • 本文向大家介绍YII动态模型(动态表名)支持分析,包括了YII动态模型(动态表名)支持分析的使用技巧和注意事项,需要的朋友参考一下 本文分析了YII动态模型(动态表名)支持机制。分享给大家供大家参考,具体如下: 给YII 框架增加动态模型支持 Yii框架中的数据模型使用静态机制,如果要使用模型方式操作某张数据表,就必须得事先创建数据表对应的模型类(位于 protected/models 目录下),

  • Apache HTTP服务器是一个模块化的软件,管理员可以通过选择服务器中包含的模块进行功能增减。模块可以在编译时被静态包含进httpd二进制文件,也可以编译成独立于httpd二进制文件的动态共享对象(DSO)。DSO模块可以与服务器一起编译,也可以用Apache扩展工具(apxs)单独编译。 本文阐述如何使用DSO模块及其工作原理。 实现 相关模块 相关指令 mod_so LoadModule

  • 第 25 章 动态语言支持 目录 25.1. 介绍 25.2. 第一个例子 25.3. 定义动态语言支持的bean 25.3.1. 公共概念 25.3.2. JRuby beans 25.3.3. Groovy beans 25.3.4. BeanShell beans 25.4. 场景 25.4.1. Spring MVC控制器脚本化 25.4.2. Validator脚本化 25.5. 更多的