Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php maria db dynamic columns的Laravel雄辩包装器_Php_Mysql_Laravel_Mariadb - Fatal编程技术网

Php maria db dynamic columns的Laravel雄辩包装器

Php maria db dynamic columns的Laravel雄辩包装器,php,mysql,laravel,mariadb,Php,Mysql,Laravel,Mariadb,据我所知,哪个MariaDb有一个动态列,数据库中该列的数据应该是blob 动态列存储在真实blob列中 在MariaDbsql命令中,我们可以使用CREATE\u COLUMN创建一些列,并使用GET\u COLUMN从blob 例如: 插入数据: 插入鸟瞰图 (人类id、所见时间、观察) 价值观 (27,现在(), 列创建('翼形','尖', "嘴形","通用","主色","灰色";; 从数据库获取查询: 首先选择name_作为“鸟人”, 日期格式(时间显示为“%b%d”)为“日期”, 列

据我所知,哪个
MariaDb
有一个
动态列
,数据库中该列的数据应该是
blob

动态列存储在真实blob列中

MariaDb
sql命令中,我们可以使用
CREATE\u COLUMN
创建一些列,并使用
GET\u COLUMN
blob

例如:

插入数据:

插入鸟瞰图
(人类id、所见时间、观察)
价值观
(27,现在(),
列创建('翼形','尖',
"嘴形","通用","主色","灰色";;
从数据库获取查询:

首先选择name_作为“鸟人”,
日期格式(时间显示为“%b%d”)为“日期”,
列_GET(观察结果,'机翼形状'为字符)为'Wings',
列_GET(观测值,'翼展'为INT)为'Span(cm)',
列_GET(观察值,'喙形'为CHAR)为'bike'
从鸟类目击
使用(human_id)加入人类;

现在我想知道什么?对于这个结构,是否有任何
雄辩的
包装器,与它们一起使用like
ORM
?或者我如何在
Laravel

中使用此结构而不亲自测试我认为您可以尝试在您的模型中添加以下内容:

public function newEloquentBuilder($query) {
      $query->addSelect(DB::raw("COLUMN_GET(observations, 'wing-shape' AS CHAR)"));
      $query->addSelect(DB::raw("COLUMN_GET(observations, 'wingspan' AS CHAR)"));
      $query->addSelect(DB::raw("COLUMN_GET(observations, 'bill-shape' AS CHAR)"));
      return parent::newEloquentBuilder($query);    
}
如果您只想为特定查询临时获取它们,您只需在查询生成器中添加上述选择,例如:

$sighting = BirdSighting::selectRaw("name_first AS 'Birder', 
DATE_FORMAT(time_seen, '%b %d') AS 'Date',
COLUMN_GET(observations, 'wing-shape' AS CHAR) AS 'Wings',
COLUMN_GET(observations, 'wingspan' AS INT) AS 'Span (cm)',
COLUMN_GET(observations, 'bill-shape' AS CHAR) AS 'Beak'")->get()

重写
newEloquentBuilder
方法后,您能帮我吗?我如何使用该方法?我如何将
查询
传递到该查询中?每当您执行类似
鸟瞰::where(condition)
的操作时,应调用方法
newEloquentBuilder
,以创建新的查询生成器,在这些情况下,新的构建器将使用这些额外的选择来创建,因此在进行查询时,不需要再做任何事情来获取模型中的这些列