我必须从输入中跟随数组
array:9 [
"columns" => "4"
"device_id" => array:4 [
0 => "1"
1 => "2"
2 => "3"
3 => "4"
]
"hub_id" => "11"
"usage" => array:4 [
0 => "1"
1 => "2"
2 => "3"
3 => "4"
]
....
在我的 foreach 循环中,我仅返回一个值,而不是全部
$devices = $request->all();
foreach ($devices["device_id"] as $device) {
dd($device);
}
这只会返回 1 一个值,而不是全部。
我无法显示所有值并将其保存到数据库。 女巫会是快速正确的方法吗?
答案 0 :(得分:1)
数组和您得到的行为是正常的。
$devices = $request->all();
foreach ($devices["device_id"] as $device) {
dd($device);
}
这确实将返回1
,因为您的光标位于$devices["device_id"]
的第一个值。如果您等待下一次迭代,它将是2
,然后是3
和4
。
请记住,您也可以这样编写foreach:
foreach ($devices["device_id"] as $index => $device)
,其中$index
等于与当前值相关的索引。
如果需要所有值,则只需dd($devices["device_id"])
,它将返回以下数组:
array:4 [
0 => "1"
1 => "2"
2 => "3"
3 => "4"
]
答案 1 :(得分:1)
您不将数组保存在数据库中。数据库不应保存多维结构,因为它们不支持多维结构。
您必须将数组转换为数据库能够保存的格式,例如JSON或PHP序列化。如果您以后不必再轻易地搜索数据,以这种方式保存数据实际上是很常见的。
尽管如此,我还是会在您的模型中使用setter来实现:
public function setAttributeNameAttribute($values)
{
$this->attributes['attribute_name'] = json_encode($values);
}
public function getAttributeNameAttribute($values)
{
return json_decode($values);
}