在创建视图中保存数据后如何生成pdf

时间:2019-08-18 15:30:37

标签: laravel eloquent dompdf

我正在使用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();
    }

pdfview:

<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>

在打印预览中仅获取“名字:”和“姓氏:”。

2 个答案:

答案 0 :(得分:0)

您只选择一个值,而不是数组或多值。

Model::orderBy('id', 'DESC')->pluck('**column name**','id')->first();

答案 1 :(得分:0)

您有一些可能需要改进的问题。第一个是,如果您希望获取对象集合,但仅使用first()方法,它将只为您提供一个实例。使用pluck会使情况更加复杂,因为它不会为您提供整个对象,而是示例代码中只有一个字段(id):

$visID = MyModel::orderBy('id', 'DESC')->pluck('id')->first();

我建议您更改以上内容以获得完整的模型。删除pluck,如果您的数据库具有latest()字段来支持它,则添加created_at

$exi = MyModel::latest()->first();

,您处在正确的轨道上,也可以使用orderBy来完成(Laravel的latest()只是同一件事的语法糖-看起来很整洁):

$exi = MyModel::orderBy('id', 'DESC')->first();

然后,而不是:

$exi= $visID;

您已经在上面的查询行中的变量中有了最后一个模型。转到刀片后,您将所有数据包含在$exi中,并可以使用所需的对象符号:

<tr>
     <th>First Name:</th>
     <td>{{ $exi->first_name }}</td>
</tr>
// etc