【问题标题】:Store array in Laravel 5.6在 Laravel 5.6 中存储数组
【发布时间】:2019-01-29 13:46:13
【问题描述】:

我必须从输入中跟踪数组

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 一个值而不是全部。

显示所有值并将它们保存到数据库时出现问题。 女巫会是快速正确的方法吗?

【问题讨论】:

  • 数组对我来说看起来不错。
  • Witch 是从数组中保存数据的最佳方式?
  • 请显示您的 foreach 循环和将这些数据保存到数据库的代码
  • 检查我更新的问题,我想一次循环,但如果我一次循环它们,我只会得到数组编号。
  • @Edo 你正在使用dd 函数。 dd 表示死亡和转储。所以程序将在第一次迭代中退出。尝试做echo $device;print_r($device);

标签: arrays laravel


【解决方案1】:

你得到的数组和行为是正常的。

$devices = $request->all();    
foreach ($devices["device_id"] as $device) {
           dd($device);
}

这确实会返回1,因为您的光标位于$devices["device_id"] 的第一个值上。如果您等待下一次迭代,它将是2,然后是34

记住你也可以这样写你的foreach:

foreach ($devices["device_id"] as $index => $device)

,其中$index 将等于与当前值相关的索引。

如果你想要所有值,你可以简单地dd($devices["device_id"]),它会返回这个数组:

array:4 [
    0 => "1"
    1 => "2"
    2 => "3"
    3 => "4"
 ]

【讨论】:

  • 你想说的是:如果我尝试保存 dd($device);例如。 $all_devices_id 会将所有值存储在数据库中吗?还是?
  • dd($something) 仅用于调试目的,如果您可以使用相关的模型和数据库表更新您的问题,我可以向您展示如何使用该数组并将这些数据更准确地保存到表中
  • 请告诉我如何将数组数据保存到数据库,据我了解,如果我执行以下操作,这将保存该表中的所有数据:foreach ($devices_id as $device_id) { $device_id = $device_id; } $device = new Device(); $device->device_id = $device_id; $device->save();
  • 我会让数组的所有值都正确吗?即使我 dd 我只看到一个?
【解决方案2】:

您没有将数组保存在数据库中。数据库不应该保存多维结构,因为它们不支持它们。

您必须将数组转换为数据库能够保存的格式,例如 JSON 或 PHP 序列化。如果您以后不需要轻松搜索数据,以这种方式保存数据实际上是很常见的。

不过,我会在您的模型中使用 setter 来实现此目的:

public function setAttributeNameAttribute($values)
{
    $this->attributes['attribute_name'] = json_encode($values);
}

public function getAttributeNameAttribute($values)
{
    return json_decode($values);
}

【讨论】:

  • 好的,那我如何循环数组呢?
  • 一旦您可以访问模型,您只需循环它,因为 Laravel 魔术 getter 会自动将 JSON 字符串转换为对象。
猜你喜欢
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2018-09-01
  • 1970-01-01
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多