如何在创建视图中保存数据后生成pdf
How to generate pdf after saving data in create view
我正在使用 barryvdh/dompdf 包装器来打印和保存 PDF,当我尝试 "Print" 将数据插入数据库后,它没有将上次保存的数据提取到 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 Name:" 和 "Last Name:"。
您只需提取一个值,而不是数组或多个值。
Model::orderBy('id', 'DESC')->pluck('**column name**','id')->first();
您有几个问题可以改进。第一个是,如果你希望得到一个对象的集合,但只使用 first()
的方法,它只会给你一个实例。使用 pluck
进一步加剧了这一点,因为它不会为您提供整个对象,而只会为您的示例代码中的一个字段 (id
) 提供:
$visID = MyModel::orderBy('id', 'DESC')->pluck('id')->first();
我建议您更改以上内容以获得完整模型。删除 pluck
,如果您的数据库有 created_at
字段支持,请添加 latest()
:
$exi = MyModel::latest()->first();
或,你走对了,用orderBy也可以做到(Laravel的latest()
只是语法糖同样的事情 - 看起来很整洁):
$exi = MyModel::orderBy('id', 'DESC')->first();
然后,而不是:
$exi= $visID;
您已经在上面查询行的变量中有了最后一个模型。通过 blade 后,您拥有 $exi
内的所有数据,并且可以使用您希望的对象表示法:
<tr>
<th>First Name:</th>
<td>{{ $exi->first_name }}</td>
</tr>
// etc
我正在使用 barryvdh/dompdf 包装器来打印和保存 PDF,当我尝试 "Print" 将数据插入数据库后,它没有将上次保存的数据提取到 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 Name:" 和 "Last Name:"。
您只需提取一个值,而不是数组或多个值。
Model::orderBy('id', 'DESC')->pluck('**column name**','id')->first();
您有几个问题可以改进。第一个是,如果你希望得到一个对象的集合,但只使用 first()
的方法,它只会给你一个实例。使用 pluck
进一步加剧了这一点,因为它不会为您提供整个对象,而只会为您的示例代码中的一个字段 (id
) 提供:
$visID = MyModel::orderBy('id', 'DESC')->pluck('id')->first();
我建议您更改以上内容以获得完整模型。删除 pluck
,如果您的数据库有 created_at
字段支持,请添加 latest()
:
$exi = MyModel::latest()->first();
或,你走对了,用orderBy也可以做到(Laravel的latest()
只是语法糖同样的事情 - 看起来很整洁):
$exi = MyModel::orderBy('id', 'DESC')->first();
然后,而不是:
$exi= $visID;
您已经在上面查询行的变量中有了最后一个模型。通过 blade 后,您拥有 $exi
内的所有数据,并且可以使用您希望的对象表示法:
<tr>
<th>First Name:</th>
<td>{{ $exi->first_name }}</td>
</tr>
// etc