此方法只能將多個簡歷以分頁形式展示,不能分開批量導出多個文件的形式,如果有做出來的歡迎留言相告,謝謝!!!
就用兩個方法(也可以合到一個方法中),直接上乾貨,裏面有註釋自己去看:
//這個方法中寫導出邏輯
public function ceshi(Request $request)
{
//先查詢數據,定義多個模型關聯
$data = Technician::where($where)->with(['user' => function($query) {
$query->field('id,nickname,phone,avatar,sex,age');
},'exs' => function($query) {
$query->field('id,title');
},'tags' => function($query) {
$query->field('id,title');
}])->order('id desc')->paginate(10)->toArray();
//注意這裏的頭部一定要拿到循環數據的外面,只能有一個頭部,不然只能導出一條數據
$content="
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<xml><w:WordDocument><w:View>Print</w:View></xml>
</head>";
//這裏循環數據並調用下面的ce方法填充數據,並拼接
foreach ($data['data'] as $k=>$v) {
$content.= $this->ce($v);
}
//打開緩衝區(一定要加上緩衝區,先把輸出存到裏面,再一起輸出)
ob_start();
//將數據輸出瀏覽器
echo $content;
header('Cache-Control: public');
//定義文檔名稱
header('Content-Disposition: attachment; filename='.'簡歷.doc');
header('Pragma:no-cache');
header('Expires:0');
//開始執行下載
Header('Content-type: application/octet-stream');//聲明下載文件的類型
Header('Accept-Ranges: bytes');
ob_end_flush();//輸出全部內容到瀏覽器
}
//這個方法中用來拼接寫簡歷模板,並填充數據
public function ce($v)
{
$content= "<body>
<h1 style='text-align: center'>{$v['user']['nickname']}的簡歷</h1>
<table border='1' cellpadding='3' cellspacing='0' style='height: 92px;'>
<tr>
<td width='93' valign='center' colspan='2' >姓名</td>
<td width='160' valign='center' colspan='4' >{$v['user']['nickname']}</td>
<td width='89' valign='center' colspan='2' >性別</td>
<td width='156' valign='center' colspan='3' >";
if($v['user']['sex'] == 1){
$content.= '男';
} else if($v['user']['sex'] == 0){
$content.= '女';
}
$content.= "</td>
<td width='125' colspan='2' rowspan='3' align='center' valign='middle' ><img src='https://www.hbjianhong.com/Public/images/QRCode.png' width='120' height='120' /></td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >年齡</td>
<td width='160' valign='center' colspan='4' >{$v['user']['age']}</td>
<td width='89' valign='center' colspan='2' >學歷</td>
<td width='156' valign='center' colspan='3' >大專</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >手機</td>
<td width='160' valign='center' colspan='4' >{$v['user']['phone']}</td>
<td width='89' valign='center' colspan='2' >服務城市</td>
<td width='156' valign='center' colspan='3' >{$v['city']}</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >期望薪資</td>
<td width='160' valign='center' colspan='4' >{$v['exs']['title']}</td>
<td width='89' valign='center' colspan='2' >工作經驗</td>
<td width='156' valign='center' colspan='3' >{$v['years']}</td>
<td width='89' valign='center' >工作狀態</td>
<td width='50' valign='center'>";
if($v['work_status'] == 1){
$content.= '離職-隨時到崗';
} else if($v['work_status'] == 2){
$content.= '在職-考慮狀態';
}else if($v['work_status'] == 3){
$content.= '離職-需要準備';
}
$content.= "
</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' style='width:93px;'>籍貫</td>
<td width='530' valign='center' colspan='11' >{$v['hometown']}</td>
</tr>
<tr>
<td width='93' valign='center'>標籤</td>
<td width='570' valign='center' colspan='12' >
";
foreach ($v['tags'] as &$vo){
$content.= $vo['title'].' ';
}
$content.= "
</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' rowspan='3'>個人簡介</td>
<td width='570' valign='center' colspan='12' rowspan='3' >{$v['Introduction']}</td>
</tr>
</table>
<br>
<br>
<br>
<br>
</body>";
return $content;
}