laravel - 在创建视图中保存数据后如何生成pdf
问题描述
我正在使用 barryvdh/dompdf 包装器来打印和保存 PDF,当我在将数据插入数据库后尝试“打印”时,它不会将上次保存的数据提取到 PDF。
我尝试通过获取最后保存的 id 来获取数据,但仍然没有运气。
主视图的打印按钮:
<a href="{!! url('printPDF') !!}" target="_blank" class="btn btn-info">Print</a>
控制器:
public function printPDF(Request $request)
{
$visID = MyModel::orderBy('id', 'DESC')->pluck('id')->first();
$exi= $visID;
$pdf = PDF::loadView('pdfview', compact('exi'));
return $pdf->stream();
}
pdf查看:
<table>
<tr>
<th>First Name:</th>
<td>{{ $exi['first_name'] }}</td>
</tr>
<tr>
<th>Last Name:</th>
<td>{{ $exi['last_name'] }}</td>
</tr>
<tr>
</table>
在打印预览中仅获取“名字:”和“姓氏:”。
解决方案
您有几个问题可以改进。第一个是,如果您希望获得一个对象集合但只使用 的方法first()
,它只会给您一个实例。使用pluck
进一步的化合物,因为它不会给你整个对象,而只是id
你的示例代码中的一个字段():
$visID = MyModel::orderBy('id', 'DESC')->pluck('id')->first();
我建议您更改上述内容以获取完整模型。如果您的数据库具有支持它的字段,请删除pluck
,添加:latest()
created_at
$exi = MyModel::latest()->first();
或者,你走在了正确的轨道上,并且也可以使用 orderBy 来做到这一点(Laravellatest()
只是同一件事的语法糖 - 看起来很整洁):
$exi = MyModel::orderBy('id', 'DESC')->first();
然后,而不是:
$exi= $visID;
您已经在上面的查询行的变量中拥有了最后一个模型。在通过刀片后,您拥有其中的所有数据$exi
并且可以使用您希望的对象表示法:
<tr>
<th>First Name:</th>
<td>{{ $exi->first_name }}</td>
</tr>
// etc
推荐阅读
- kubernetes - 如何配置 Spring Cloud Data Flow 以在每个任务的单独命名空间中执行任务?
- django - TypeError:包含代理模型“TokenProxy”不允许的模型字段的抽象基类。尝试在 Django 中进行迁移时
- javascript - 根据 React 组件中的键/值字典映射所有链接
- node.js - Discord Bot 随机回复
- python - 通用详细视图 UserProfileDetailView 必须使用对象 pk 或 URLconf 中的 slug 调用
- linux - 如何通过 Pod 的启动脚本导出环境变量
- bootstrap-4 - 如何使用 Bootstrap 4.5.0 在 JHipster 6.10.3 中创建 Jumbotron
- html - jQuery Slick 轮播布局不适用于移动布局
- assembly - 16 位(4 位)BCD 加法 (TASM 8086)
- javascript - Angular test when a function is called when activated route has params