【问题标题】:Laravel get value from db with columns key/valueLaravel 使用列键/值从 db 获取值
【发布时间】:2021-05-29 04:55:54
【问题描述】:

我的数据库中有一个包含这些列的表:

+-----------------+---------------------+------+-----+---------+----------------+
| Field           | Type                | Null | Key | Default | Extra          |
+-----------------+---------------------+------+-----+---------+----------------+
| id              | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| name            | varchar(255)        | NO   |     | NULL    |                |
| value           | varchar(255)        | NO   |     | NULL    |                |
+-----------------+---------------------+------+-----+---------+----------------+

我会按名称访问值。

例如我有这些数据:

+----+------------+------------+
| id | name       | value      |
+----+------------+------------+
|  1 | start_date | 2020-01-01 |
|  2 | end_date   | 2021-01-01 |
+----+------------+------------+

我希望在“开始日期”之前获得“2020-01-01”。

我尝试了这段代码,但我并不满意,因为使用这段代码我得到了行的所有值,而不仅仅是预期的值。

Configuration::get()->keyBy('start_date');

我不确定我是否清楚。

告诉我。

非常感谢!!

【问题讨论】:

  • 你试过什么?我没有在您的问题中看到任何模型或查询或任何内容...在 Stackoverflow 上,您应该努力解决自己的问题,我们将协助调试您的方法。
  • @TimLewis 我添加了我的代码。感谢您的建议!
  • 没问题!下一步,只是快速解释为什么该代码不起作用:) 它做了什么与您期望它做什么。乍一看,也许Configuration::pluck('name', 'value') 可能有用(或::pluck('value', 'name'),不确定顺序)
  • 使用我发布的代码,你最终应该得到一个这样的集合:['start_date' => '2020-01-01', 'end_date' => '2021-01-01'],所以如果你做了$keyVals = Configuration::pluck('value', 'name');,那么你就可以像$keyVals['start_date']一样访问它( '2020-01-01') 和 $keyVals['end_date'] ('2021-01-01')。那是你要找的吗?如果不是,那我真的不明白你的问题……
  • 我认为这对我有好处!我会在我的代码中尝试:) 在此先感谢

标签: laravel model-view-controller eloquent controller


【解决方案1】:

假设你想得到一个键/值对数组,并且name列中的每个键都是唯一的,你可以简单地使用pluck()https://laravel.com/docs/8.x/collections#method-pluck):

$configuration = Configuration::pluck('value', 'name');
dd($configuration);
// ['start_date' => '2020-01-01', 'end_date' => '2021-01-01']

然后,您只需在适用的情况下使用数组访问来使用这些配置设置:

$startDate = $configuration['start_date']; // '2020-01-01'
$endDate = $configuration['end_date'];     // '2021-01-01'
...

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 2018-12-30
    • 2021-11-11
    • 2017-05-17
    • 2016-04-29
    • 2021-03-13
    • 2023-03-16
    • 2022-01-20
    相关资源
    最近更新 更多