Laravel - Foreach 在会话中并获取属性
Laravel - Foreach in session and get attributes
我目前正在制作一个系统,在将值放入数据库之前我正在处理会话以防止混乱。现在我有一个小问题。如果用户到达某个控制器,则会话中存储的所有值都需要存储在数据库中。我的会话如下所示:
如果 GIF 太小,这里是一个 imgur link:https://imgur.com/a/uUxcI
现在我需要一个 foreach 循环来遍历所有主题和产品会话并获取它们的价格和 ID。但是因为它们存储在会话中,所以我不知道如何检索它们。
我像这样将它们存储在会话中:
主题
$theme = Product::find($selectedTheme);
foreach($this->predefinedArray as $value) {
$request->session()->put('chosen_theme.' . $value, $theme->$value);
}
插件
foreach($request->input('plugin') as $key => $value) {
if ($value === 'selected') {
$selectedPlugin = $key;
$plugin = Product::find($selectedPlugin);
$price += $plugin->price;
echo "ID: " . $plugin->id . "<br>";
$selectedPlugins[$plugin->id] = $plugin->toArray();
$request->session()->put('chosen_plugins.' . 'PluginID' . $plugin->id, $plugin->toArray());
$request->session()->put('chosen_plugins.' . 'PluginID' . $plugin->id .'.composer_package', $plugin->productable->composer_package);
}
}
我知道如何从单个会话中获取值,就像这样$themePrice = Session::get('chosen_theme')['price'];
但我不知道如何使用数组循环遍历会话
这是我所得到的
foreach( It needs to loop through all the sessions ) {
$orderItems = new Orderitems;
$orderItems->order_id = $order->id;
$orderItems->product_id = ;
$orderItems->price = ;
}
提前致谢!
我相信您需要在使用 foreach
之前将 chosen_theme
和 chosen_plugins
会话数据合并在一起。
考虑创建一个新变量 $products = Session::get('chosen_plugins')
。这是一个多维数组。
然后使用 $products['theme'] = Session::get('chosen_theme')
将 chosen_theme
数组添加到 $products
。这是在假设只有一个 chosen_theme
并且它是一个一维数组的情况下完成的。
结构现在应该如下所示:
[
'pluginid1' => [...],
'pluginid2' => [...],
'pluginid3' => [...],
'pluginid4' => [...],
'theme' => [...]
];
然后,您应该能够运行您的循环:
foreach ($products as $product) {
$model = new Model;
$model->price = $product['price'];
...
}
祝一切顺利。
我目前正在制作一个系统,在将值放入数据库之前我正在处理会话以防止混乱。现在我有一个小问题。如果用户到达某个控制器,则会话中存储的所有值都需要存储在数据库中。我的会话如下所示:
如果 GIF 太小,这里是一个 imgur link:https://imgur.com/a/uUxcI
现在我需要一个 foreach 循环来遍历所有主题和产品会话并获取它们的价格和 ID。但是因为它们存储在会话中,所以我不知道如何检索它们。
我像这样将它们存储在会话中:
主题
$theme = Product::find($selectedTheme);
foreach($this->predefinedArray as $value) {
$request->session()->put('chosen_theme.' . $value, $theme->$value);
}
插件
foreach($request->input('plugin') as $key => $value) {
if ($value === 'selected') {
$selectedPlugin = $key;
$plugin = Product::find($selectedPlugin);
$price += $plugin->price;
echo "ID: " . $plugin->id . "<br>";
$selectedPlugins[$plugin->id] = $plugin->toArray();
$request->session()->put('chosen_plugins.' . 'PluginID' . $plugin->id, $plugin->toArray());
$request->session()->put('chosen_plugins.' . 'PluginID' . $plugin->id .'.composer_package', $plugin->productable->composer_package);
}
}
我知道如何从单个会话中获取值,就像这样$themePrice = Session::get('chosen_theme')['price'];
但我不知道如何使用数组循环遍历会话
这是我所得到的
foreach( It needs to loop through all the sessions ) {
$orderItems = new Orderitems;
$orderItems->order_id = $order->id;
$orderItems->product_id = ;
$orderItems->price = ;
}
提前致谢!
我相信您需要在使用 foreach
之前将 chosen_theme
和 chosen_plugins
会话数据合并在一起。
考虑创建一个新变量 $products = Session::get('chosen_plugins')
。这是一个多维数组。
然后使用 $products['theme'] = Session::get('chosen_theme')
将 chosen_theme
数组添加到 $products
。这是在假设只有一个 chosen_theme
并且它是一个一维数组的情况下完成的。
结构现在应该如下所示:
[
'pluginid1' => [...],
'pluginid2' => [...],
'pluginid3' => [...],
'pluginid4' => [...],
'theme' => [...]
];
然后,您应该能够运行您的循环:
foreach ($products as $product) {
$model = new Model;
$model->price = $product['price'];
...
}
祝一切顺利。