Laravel slug 不起作用 - 显示相同的记录
Laravel slug does not work - displays the same record
我已经定义了 slug 来查看产品。 slug 目的地工作正常,但所有 slug return 相同的产品(第一个)不是应该的。
浏览时没有显示需要的商品。它显示了数据库中的第一条记录。我错过了什么?
我的路线
Route::get('/{slug}/order', 'Controller@order')->name('order')->where('slug', '[\w\d\-]+(.*)');
Route::post('/{slug}/order', 'Controller@order_store')->name('order_store')->where('slug', '[\w\d\-]+(.*)');
Route::get('/{slug}', 'Controller@view')->name('view')->where('slug', '[\w\d\-]+(.*)');
控制器
public function show($slug, request $id)
{
$item = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
return view ('products.show', ['item'=>$item]);
}
查看Blade
<a target="_blank" href="{{ route('view', $item['slug']) }}">View</a>
更改路线
Route::get('/{slug}', 'Controller@view')->name('view')->where('slug', '[\w\d\-]+(.*)');
Route::get('/{slug}/order', 'Controller@order')->name('order')->where('slug', '[\w\d\-]+(.*)');
Route::post('/{slug}/order', 'Controller@order_store')->name('order_store')->where('slug', '[\w\d\-]+(.*)');
改变方法
public function show($slug)
{
$shproduct = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
return view ('products.show', ['shproduct'=>$shproduct]);
}
供日后参考:
您不应在查询生成器上调用 firstOrFail() 两次。
改变
$item = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
到
$item = Item::where('slug', $slug)->where('status', true)->firstorfail();
我已经定义了 slug 来查看产品。 slug 目的地工作正常,但所有 slug return 相同的产品(第一个)不是应该的。
浏览时没有显示需要的商品。它显示了数据库中的第一条记录。我错过了什么?
我的路线
Route::get('/{slug}/order', 'Controller@order')->name('order')->where('slug', '[\w\d\-]+(.*)');
Route::post('/{slug}/order', 'Controller@order_store')->name('order_store')->where('slug', '[\w\d\-]+(.*)');
Route::get('/{slug}', 'Controller@view')->name('view')->where('slug', '[\w\d\-]+(.*)');
控制器
public function show($slug, request $id)
{
$item = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
return view ('products.show', ['item'=>$item]);
}
查看Blade
<a target="_blank" href="{{ route('view', $item['slug']) }}">View</a>
更改路线
Route::get('/{slug}', 'Controller@view')->name('view')->where('slug', '[\w\d\-]+(.*)');
Route::get('/{slug}/order', 'Controller@order')->name('order')->where('slug', '[\w\d\-]+(.*)');
Route::post('/{slug}/order', 'Controller@order_store')->name('order_store')->where('slug', '[\w\d\-]+(.*)');
改变方法
public function show($slug)
{
$shproduct = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
return view ('products.show', ['shproduct'=>$shproduct]);
}
供日后参考:
您不应在查询生成器上调用 firstOrFail() 两次。
改变
$item = Item::where('slug', $slug)->firstorfail()->where('status', true)->firstorfail();
到
$item = Item::where('slug', $slug)->where('status', true)->firstorfail();