Hol*_*ola 11 php mysql json laravel
我想在给定数组的数据库中存储一些json格式数据.但我如何使用控制器存储它.
假设我有json数据,如:
{"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}
Run Code Online (Sandbox Code Playgroud)
据我所知,在控制器中使用json格式是这样的,因为我还没有完全清楚它.
public function saveUser(Request $request)
{
$div=new Div();
$user->json = json_encode( array({"Date 1": {
{"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}
$div->save();
return redirect('getList');
}
Run Code Online (Sandbox Code Playgroud)
如何使用Laravel Controller将它保存在mySQL中仅使用分区模型中的分区列表?
您不需要自己将数组数据转换为JSON字符串,在模型上使用Laravel $ casts参数:https://laravel.com/docs/5.2/eloquent-mutators#attribute-casting
您应该在Div模型中执行以下操作:
protected $casts = [
'divisions' => 'array',
];
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以将模型转换为 JSON 格式,例如
$model->toJson();
或者
如果数组中有数据,则可以使用 json_encode(['id' => 1, 'name' => 'User 1']);
Laravel Schema 确实支持 JSON 字段类型以及看起来https://laravel.com/docs/5.0/schema#adding-columns
您也可以使用text字段类型来存储 JSON 数据。
设置您的模型
protected $casts = [
'list' => 'array'
];
Run Code Online (Sandbox Code Playgroud)
这是完整的代码。
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'primary_id',
'list'
];
protected $casts = [
'list' => 'array'
];
public function setMetaAttribute($value)
{
$list = [];
foreach ($value as $array_item) {
if (!is_null($array_item['key'])) {
$list[] = $array_item;
}
}
$this->attributes['list'] = json_encode($list);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23482 次 |
| 最近记录: |