Sag*_*ing 8 php forms json laravel pluck
从数据库中提取时,我得到id了字符串.
$alphabets = new Alphabet();
return $alphabets->pluck('name', 'id');
Run Code Online (Sandbox Code Playgroud)
产量
{
"1": "Apple",
"2": "Ball",
"3": "Cat"
}
Run Code Online (Sandbox Code Playgroud)
预期
{
1: "Apple",
2: "Ball",
3: "Cat"
}
Run Code Online (Sandbox Code Playgroud)
但是,当我扭转ID和name,
return $alphabets->pluck('id', 'name');
Run Code Online (Sandbox Code Playgroud)
我得到id为整数.
{
"Apple": 1,
"Ball": 2,
"Cat": 3
}
Run Code Online (Sandbox Code Playgroud)
我不确定幕后发生了什么.但是我如何获得整数ID?实际上,旧的flash会话因为1 vs "1"Form Collective 而没有设置值.
{!! Form::select('alphabet', $alphabets, null, ['class' => 'form-control', 'multiple' => true]) !!}
Run Code Online (Sandbox Code Playgroud)
试试这个代码
$alphabets = new Alphabet();
return $alphabets->all()->pluck('name', 'id');
Run Code Online (Sandbox Code Playgroud)
Alphabet.php
你应该像这样投射你的列.
protected $casts = [
'id' => 'integer',
'name' => 'string'
];
Run Code Online (Sandbox Code Playgroud)
我想我在这里找到了答案。
https://laracasts.com/discuss/channels/laravel/pluck-id-integer-cast-to-string
这里我发现JSON只允许键名是字符串。
{
"1": "Apple",
"2": "Ball",
"3": "Cat"
}
Run Code Online (Sandbox Code Playgroud)
事实上,我想实现它Form Collective。这是一个错误,现在它的 PR 已被合并。
https://github.com/LaravelCollective/html/pull/368#pullrequestreview-46820423