laravel - Laravel,如何被选中,数据库字段
问题描述
有一个模型,来自控制器,我需要访问这个模型数据库字段。
控制器中的代码:
$crud -> get() -> getAttributes();
//$crud->attributesToArray()
print_r($crud);
我能够获得整个表格字段,但我只需要选中的字段。只需要动态显示带有选定字段的表,它可以在运行时更改。
解决方案
假设您有一个查询:
$query = Crud::select('id as Id', 'name as Name', 'something')
->selectRaw('CONCAT(id, "-", name) as Serial')
->get();
在不知道查询是什么的情况下,得到一个看起来像这样的表
ID | 姓名 | 某物 | 串行 |
---|---|---|---|
1 | 一个 | 洛雷姆 | 1-A |
.. | …… | ………… | …… |
您需要使用Builder
实例(在调用之前->get()
$query = Crud::select('id as Id', 'name as Name', 'something')
->selectRaw('CONCAT(id, "-", name) as Serial');
$results = $query->get();
dump($query->getQuery()->columns);
/*
[
'id as Id',
'name as Name',
'something',
Illuminate\Database\Query\Expression
]
*/
dump(array_map(function ($column) {
return $column instanceof Illuminate\Database\Query\Expression
? Str::afterLast($column->getValue(), 'as ')
: Str::afterLast($column, 'as ');
}, $query->getQuery()->columns));
/*
[
'Id',
'Name',
'something',
'Serial'
]
*/
所以你可以看到。
$query = Crud::select('id as Id', 'name as Name', 'something')
->selectRaw('CONCAT(id, "-", name) as Serial')
->get();
$columns = array_map(function ($column) {
return $column instanceof Illuminate\Database\Query\Expression
? Str::afterLast($column->getValue(), 'as ')
: Str::afterLast($column, 'as ');
}, $query->getQuery()->columns);
$results = $query->get();
return view('view', compact('columns', 'results'));
然后在你看来
<table>
<thead>
<tr>
@foreach ($columns as $column)
<th>{{ $column }}</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach ($results as $result)
<tr>
@foreach ($columns as $column)
<td>{{ $result->{$column} }}</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
推荐阅读
- java - 使用单体项目的 Spotbugs 规则运行声纳扫描仪时出错?
- python - Pandas - 在方法链接中使用 assign 和 if-else 语句
- python - 通过理解中的连续更新创建 dict
- java - 首先在包中运行特定的测试类
- azure-language-understanding - 如何为发票数据提取设置 LUIS
- docusignapi - 将已签名的文档转发给其他收件人,以便使用 DocuSign 和 C# 在同一文档上签名
- mysql - Docker-compose 初始化数据库
- php - 在刀片中存储变量以避免在另一个控制器中重复相同的查询
- hyperledger-fabric - 错误:出现意外状态:BAD_REQUEST - 将配置更新应用到现有频道时出错
- reactjs - 从一个组件单击到另一个组件时如何在 url 中保留参数