根据索引或列查找数据的值

find the value of data based on index or column

提问人:Raka Putra 提问时间:11/15/2023 最后编辑:Raka Putra 更新时间:11/16/2023 访问量:62

问:

我有一个十进制数据类型的表,其列由 z|one|two|three|four|five 值组成。

z值列和第一到第九列是从用户输入的,例如我输入-3.8,第一到第九列我填写0.0001,然后我提交它,然后数据自动保存并显示在这张图片中enter image description here

然后我想找到z值的列值,例如我想找到z值-3.8的第三列,通过添加你要查找的indexm或列值,所以例如我想找到列'three'然后我把它写在搜索列中,像这样-3.83, 通过在逗号后面再添加一个数字。enter image description here

以及搜索后的结果enter image description here

怎么做?

这是我想创建的网站示例,您可以自己尝试以更好地理解我的意思 https://setemen.id/project_statistik/tabel

我的控制器是这样的

    public function index(Request $request)
    {
        $chi = DataChi::orderBy('id', 'ASC')->get();
        $searchedColumn = null;

        if ($request->has('search')) {
            $input = $request->input('search');

            // Cari data berdasarkan nilai index dari digit kedua nilai Z yang dicari
            $chi = DataChi::where('nilai_z', 'like', '%.' . substr($input, -1) . '%')->get();
            $searchedColumn = $this->getColumnName(substr($input, -1));
        }

        return view('chi.index', compact('chi', 'searchedColumn'));
    }

    private function getColumnName($digit)
    {
        // $digit = substr($input, -1);
        $columns = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
        return $columns[$digit];
    }

我的观点是这样的

   <!-- Kolom Pencarian -->

<div class="col-md-12 mt-3">
    <form action="{{ route('chi.index') }}" method="GET">
        <label for="search" class="form-label">SearchData:</label>
        <div class="input-group">
            <input type="text" class="form-control" id="search" name="search" placeholder="Search data">
            <button class="btn btn-primary" type="submit">Search</button>
        </div>
    </form>
</div>
<!-- Kolom Hasil Pencarian -->
<div class="col-md-12 mt-3">
    @if(isset($chi) && count($chi) > 0)
    <h3>Result Search:</h3>
    @if(isset($searchedColumn))
    <table class="table">
        <!-- Tabel Header -->
        <thead>
            <tr>
                <th>Nilai Z</th>
                <th>{{ $searchedColumn }}</th>
            </tr>
        </thead>
        <!-- Tabel Body -->
        <tbody>
            @foreach($chi as $data)
            <tr>
                <td>{{ $data->nilai_z }}</td>
                <td>{{ $data->$searchedColumn }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>
    @else
    <p>Data not found</p>
    @endif
    @endif
</div>
索引 雄辩 的Laravel-Blade Laravel-9

评论

0赞 Paul T. 11/15/2023
我不确定表达式是否与声明的内容匹配?...也许应该是:?like'like', '%.''like', '%.%'
0赞 Adi 11/15/2023
您是否使用调试查询并直接在数据库上尝试查询?$sql = $chi->toSql();
0赞 Adi 11/15/2023
这也是根据您的问题提取的正确方法吗?您能更清楚地了解什么是输入,什么是预期输出吗?substr($input, -1)
0赞 Raka Putra 11/16/2023
@PaulT。我试过了,但以前我使用 % 时它不起作用。它奏效了,但结果不是我预期的,我希望能够从输入的 z 值中获取值 1 - 9
0赞 Raka Putra 11/16/2023
@Adi 先生,您能更详细地解释一下吗?我对调试查询的含义有点困惑

答: 暂无答案