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"]);
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"]);