Eloquent 我如何解析 postgresql 的 hstore?

Eloquent how I can parse postgresql's hstore?

eloquent 模型使用以下 table 并存储在 postgresql 数据库中:

name: table
id: PK SERIAL
values: HSTORE

模型命名为TableModel

namespace App;
use Illuminate\Database\Eloquent\Model;
class TableModel extends Model
{
   protected $table = 'table';
}

但是一旦我检索到值 value,我就会使用 tinker session 得到以下响应:

$model = Model::find('1');
$model->value;
""name"=>"Namae", "value"=>"55""

如何从 value 列中检索名称或值。

Hstore 只是一种格式

"key" => "Value","key"=>"value"

https://www.postgresql.org/docs/11/hstore.html

并且可以通过将 => 替换为 : 并将字符串包含在 {} 中轻松转换为 json 执行此操作的示例代码是(继续tinker session 你在问题中提到了):

$value = $model->value;
$value = str_replace('=>',':',$value);
$value = '{'.$value.'}';
$value = json_decode($value)

因为 hstore 格式等于 php 格式你可以使用 PHP eval 函数:

$hstore = '"name"=>"Namae", "value"=>"55"';

eval('$d=['.$hstore.'];');

printf("The value is %s \n", $d["value"]);

PHP online fiddle