你好,我真的是Laravel的新手。所以我真的需要一些帮助。
我的桌子上需要帮助。我的表格中的视图包含App\Models\Store
和App\Models\Product
,但我只希望每个App\Models\Store
和App\Models\ Product
仅显示为商店和产品
这是我桌上的代码
<td>
<label>
<a href="{!! route('reports.tolink', [$report->id]) !!}" target="_blank">
{!! $report->reportable_type !!}
</a>
</label>
</td>
$ report-&gt; reportbale_type它包含App \ Models \ Store和App \ Models \ Product
这是我的控制器
public function toLink($id)
{
$report = $this->reportRepository->findWithoutFail($id);
//get Store Name
$name = Store::where('id','=',$report->reportable_id)->pluck('name')->all();
$storename = $name[0];
//get Store ID
$idstore = Store::where('id','=',$report->reportable_id)->pluck('id')->all();
$storeid = $idstore[0];
if(empty($report))
{
Flash::error('Report not found');
return redirect(route('reports.index'));
}
$report_type = class_basename($report->reportable_type);
return redirect(env('FRONTEND_URL') ."/".str_slug($report_type)."/$storeid/".str_slug($storename));
}
答案 0 :(得分:1)
有几种方法可以做到这一点。
您可以使用Reflection获取短名称
(new \ReflectionClass($report->reportable_type))->getShortName()
您可以按\
进行爆炸并获取最后一项
array_pop(explode('\\', $report->reportable_type))
使用substr
和strrpos
substr($report->reportable_type, strrpos($report->reportable_type, '\\') + 1)
您可以使用上述方法之一,并为您的Report
模型添加一个getter。
public function getReportableTypeNameAttribute()
{
return (new \ReflectionClass($this->reportable_type))->getShortName();
}
允许您在视图中调用$report->reportable_type_name
。