php - 如何只显示Laravel表上的最后一个单词

时间:2017-08-10 02:30:26

标签: php laravel

你好,我真的是Laravel的新手。所以我真的需要一些帮助。

我的桌子上需要帮助。我的表格中的视图包含App\Models\StoreApp\Models\Product,但我只希望每个App\Models\StoreApp\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));

}

这是我的桌子 and this is the table

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

您可以使用Reflection获取短名称

(new \ReflectionClass($report->reportable_type))->getShortName()

您可以按\进行爆炸并获取最后一项

array_pop(explode('\\', $report->reportable_type))

使用substrstrrpos

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