我有一个名为CroppedDocumentField
的模型,其设置低于$casts
:
protected $casts = [
'content' => 'array'
];
迁移看起来像这样:
Schema::create('cropped_document_fields', function(Blueprint $table){
$table->increments('id');
$table->unsignedInteger('document_id');
$table->json('content')->nullable();
});
在我的数据库中,内容列似乎像字符串一样存储:
"{\"1\": [{\"row\": \"Bill Tc\\n\"}, {\"row\": \"Nathar\\n\"}, {\"row\": \"75839\\n\"}]}"
如果我对此表示赞同:
$document = CroppedDocumentField::Find(56);
dd(is_array($document->content));
这将返回false。
当我将JSON插入数据库时,我从包含JSON字符串的.txt文件中读取该文件:
{"1": [{"row": "Bill Tc\n"}, {"row": "Nathar\n"}, {"row": "75839\n"}]}
然后我将其插入:
$file = "mytext.txt";
$content = file_get_contents($file);
//Add the text content
$this->document->cropped()->create([
'content' => $content
]);
在我的文档模型中,我仅与CroppedDocumentField
模型有关系:
//Document.php:
public function cropped()
{
return $this->hasMany(CroppedDocumentField::class);
}
我在这里做错了什么?
答案 0 :(得分:1)
我尝试将json强制转换为项目上的数组,并且按预期方式工作,我认为问题在于您存储内容的方式。请尝试将其更改为此,并告诉我:
//Add the text content
$this->document->cropped()->create([
'content' => json_decode($content) // convert string to json
]);