You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel多对多关联路由问题:属性读取错误及内容不更新

Laravel路由与关联查询问题

初始问题:访问商品链接触发“Attempt to read property 'alias' on null”错误

路由配置

Route::get('catalog/{catname}', [MainController::class, 'getCatalog'])->name('catalog.page');
Route::get('catalog/{catname}/{alias}', [MainController::class, 'getItemsForList'])->name('catalog.view.item');

错误场景

点击链接 /catalog/table/table-black-and-white 时,抛出错误:

Attempt to read property "alias" on null

多对多模型关联

Catalog 模型

namespace App\Models;

use Illuminate\Database\Eloquent\Relations\BelongsToMany;

class Catalog extends Model
{
    public function items() : BelongsToMany
    {
        return $this->belongsToMany(Item::class);
    }
}

Item 模型

namespace App\Models;

use Illuminate\Database\Eloquent\Relations\BelongsToMany;

class Item extends Model
{
    public function catalogs() : BelongsToMany
    {
        return $this->belongstoMany(Catalog::class);
    }
}

控制器方法实现

public function getCatalog($alias)
{
    $cats = Catalog::where('alias', $alias)->first();
    $cats->items;
    return view('template.sait.page.catalog', compact('cats'))->with('alias', $alias);
}

public function getItemsForList($alias)
{
    $data = Item::where('alias', $alias)->with('catalogs')->first();
    return view('template.sait.page.catalog.view', compact('data'))->with('alias', $alias);
}

视图中生成链接的代码

@foreach($cats->items as $item)
.....
.....
<a href="{{route('catalog.view.item', $item->alias)}}">env</a>
@endforeach

2024.01.20更新:商品页面内容不随地址栏变化

问题现象

分类数据可正常展示,但进入商品页面时,地址栏会随选择的商品变化,页面内容却始终固定不变。例如:

  • 访问 www/catalogs/table/table-red-white-color 时显示红桌内容
  • 访问同分类下的 www/catalogs/table-blue-black-color,地址栏正确,但页面仍显示红桌内容

当前使用的商品查询代码

$item = Item::whereHas('catalogs', function ($catalogs) use($alias){
    $catalogs->where('alias', $alias);
})->with('catalogs')
  ->firstOrFail();
if (!$item){
    abort(404, 'Page Not found');
}
dd($items);

内容的提问来源于stack exchange,提问作者Yura Lons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:07:37