根据Laravel同一数据库表中的其他数据检索数据

时间:2019-05-27 03:16:05

标签: php laravel

我已经创建了一个名为 config_table 数据库表,如下所示:

+----+-------------+--------------+---------+
| id | config_name | config_value | user_id |
+----+-------------+--------------+---------+
|  1 | status      | 1            |       1 |
|  2 | title       | Test Title   |       1 |
|  3 | token       | k12345abc    |       1 |
+----+-------------+--------------+---------+ 

使用 Laravel Eloquent ,我可以创建一个模型,然后开始轻松地检索数据,例如:

<?php

$configs = App\Config::all();

foreach ($configs as $config) {
    echo $config->config_name;
}  

并获得输出:

status
title
token

但我想执行以下操作:

通过 config_value 获取 config_name 集合,并同时考虑 user_id

echo status;
echo title; //which is under the 'config_name' column   

预期的输出应该是

1
Test Title //which is the config_value of the config_name 'title'

1 个答案:

答案 0 :(得分:0)

您可以使用'where'来指定约束,如下所示:

选择“ config_value”,其中“ config_name”为“状态”。要仅获取第一行,请使用first()

$config = App\Config::select('config_value')->where('config_name', 'status')->first();

echo $config->config_value;

类似地,选择“ config_value”,其中“ config_name”为“ title”。要获取所有行,请使用get(),然后可以遍历所有行。

$ configs = App \ Config :: select('config_value')-> where('config_name','title')-> get();

foreach ($configs as $config) {
    echo $config->config_value;
}

您可以将其链接。选择“ config_name”为“状态”或“标题”的所有配置。

$configs = App\Config::select('config_value')->where('config_name', 'status')->orWhere('config_name', 'title')->get();

foreach ($configs as $config) {
    echo $config->config_value;
}

此外,您可以使用whereIn()指定列的多个值。选择“ config_name”为“状态”或“标题”的所有配置。

$configs = App\Config::select('config_value')->whereIn('config_name', ['status', 'title'])->get();

foreach ($configs as $config) {
    echo $config->config_value;
}