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

添加Auth::user()->id时触发array_merge参数错误的求助

错误原因与解决方法

错误原因

  1. 控制器数据传递错误:return view('emeterai', $data)中的$data不是关联数组,getPageData方法返回了对象(比如Eloquent模型实例)。Laravel的view函数底层会用array_merge合并视图数据,对象无法参与数组合并,因此触发array_merge(): Expected parameter 2 to be an array, object given错误。
  2. JavaScript逻辑存在风险:直接访问Auth::user()->id时,若用户未登录,Auth::user()返回null,调用->id会抛出属性读取错误;同时原代码的登录判断逻辑写反,已登录用户会触发未登录提示。

解决方法

1. 修复控制器数据传递问题

确保传递给view的是关联数组。如果getPageData返回对象,将其转换为数组:

public function index()
{
    $this->login();
    
    $pageData = Auth::check() ? $this->getPageData(Auth::user()->id) : $this->getPageData(null);
    // 将对象转换为数组,确保传递给视图的是数组格式
    $data = is_object($pageData) ? $pageData->toArray() : $pageData;

    return view('emeterai', $data);
}

或者直接修改getPageData方法,让它始终返回关联数组。

2. 修复JavaScript中的用户判断逻辑

先验证用户是否登录,再读取用户ID,同时修正逻辑顺序:

var userId = {!! Auth::check() ? Auth::user()->id : 'null' !!};
if (userId) {
    if (tempCart > 0) {
        const pid = {!! json_encode($meterai->product_id) !!};
        const baseUrl = window.location.origin;
        const url = `${baseUrl}/${pid}/${qty}`;
        console.log(url);
    } else {
        alert("anda belum menentukan kuantitas meterai");
    }
} else {
    alert("silahkan login terlebih dahulu untuk menambah keranjang");
}

内容的提问来源于stack exchange,提问作者Fathan Akram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:15:41