如何使用 Laravel Eloquent 在数据库中保存 JSON 响应,我收到错误“数组到字符串转换”
Posted
技术标签:
【中文标题】如何使用 Laravel Eloquent 在数据库中保存 JSON 响应,我收到错误“数组到字符串转换”【英文标题】:How to save a JSON response in Database with Laravel Eloquent, I'm getting an error "Array to string conversion" 【发布时间】:2019-11-02 13:39:21 【问题描述】:** 错误:“数组到字符串的转换”**
我正在尝试将带有 Eloquent 的 JSON(字符串)保存到数据库中,但是 我收到一个错误:“数组到字符串的转换”
我尝试在我的模型中添加:
protected $casts = ['payload' => 'array'];
或
protected $casts = ['payload' => 'json'];
但不工作!
控制器
尝试 如果($类型=='b2c') $searchEnquiry = B2CSearchEnquiry::find($enquiryID); $data = $this->searchInDataSource($searchEnquiry); $repuveConsult = 新的 B2cRepuveConsult; $repuveConsult->search_enquiry_id = $enquiryID; $repuveConsult->payload = (string)$data; $repuveConsult->saveOrFail(); catch(\异常 $e) 返回 $e->getMessage();型号
B2cRepuveConsult 类扩展模型 受保护的 $table = ['b2c_repuve_consults']; protected $fillable = ['search_enquiry_id','信息']; 受保护的 $casts = [ '信息' => '数组', ];迁移
公共函数 up() Schema::create('b2c_repuve_consults', function (Blueprint $table) $table->increments('id'); $table->integer('search_enquiry_id')->unsigned(); $table->longText('payload')->nullable(); $table->timestamps(); ); 架构::table('b2c_repuve_consults', function($table) $table->foreign('search_enquiry_id') ->参考('id') ->on('b2c_search_enquiries') ->onDelete('级联'); );原始查询有效,但不是一个好习惯,因为我使用的是 Laravel
DB::insert('插入 b2c_repuve_consults (search_enquiry_id,payload) 值 (?, ?)', [$enquiryID, $data]);【问题讨论】:
【参考方案1】:我假设您已将 "payload_Array[]" 放入视图文件中以获取数组,或者您以某种方式在 create 方法中创建数组。
B2cRepuveConsult::create([
'....' => '....',
'payload' => json_encode($request->get('payload_Array')); // This is how you save json
'....' => '....',
]);
参考:https://www.php.net/manual/en/function.json-encode.php
来自你的代码
try
if( $type == 'b2c')
$searchEnquiry = B2CSearchEnquiry::find($enquiryID);
$data = $this->searchInDataSource($searchEnquiry);
$repuveConsult = new B2cRepuveConsult;
$repuveConsult->search_enquiry_id = $enquiryID;
$repuveConsult->payload = json_encode($data); // update this
$repuveConsult->saveOrFail();
catch(\Exception $e)
return $e->getMessage();
【讨论】:
以上是关于如何使用 Laravel Eloquent 在数据库中保存 JSON 响应,我收到错误“数组到字符串转换”的主要内容,如果未能解决你的问题,请参考以下文章
Payum - Laravel 4 的包。如何使用 Eloquent 而不是 FilesystemStorage 创建模型数据?
如何在 laravel 的 eloquent 中转换表列数据?
如何在 Laravel Eloquent ORM 中获取插入的多行数据