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

如何解决「Trying to get property 'selleruserid' of non-object」错误?

解决「Trying to get property 'selleruserid' of non-object」错误

错误原因

你的代码存在两个核心问题:

  1. $featured是数组结构(你给它赋值了$featured['items']),但你用对象访问符->去获取selleruserid,语法逻辑错误。
  2. 即使修正为$featured['items'],它也是通过get()返回的Eloquent集合(包含多个商品模型实例的集合),不是单个对象,无法直接访问selleruserid属性。

解决方案

根据需求分两种场景处理:

场景1:仅获取第一个推荐商品的selleruserid

先判断集合是否有数据,再取第一个元素的属性:

$selleruserid = 0;

$featured['items'] = Items::with('Ratings')
    ->select('items.item_id', 'items.user_id AS selleruserid', 'items.item_liked','items.item_slug','items.item_preview','items.item_name','items.item_type','users.user_photo','users.username','users.user_document_verified','items.updated_item','items.item_sold','items.free_download','items.item_flash','items.item_type_cat_id','items.regular_price','items.item_token', 'items.mainpage_boost_last')
    ->leftjoin('users', 'users.id', '=', 'items.user_id')
    ->where('items.item_status','=',1)
    ->where('items.mainpage_boost_last','>', $today_date)
    ->where('items.drop_status','=','no')
    ->orderBy(DB::raw('RAND()'))
    ->take($setting['setting']->home_featured_items)
    ->get();

// 先检查集合非空,再取第一个元素的selleruserid
if (!$featured['items']->isEmpty()) {
    $selleruserid = $featured['items']->first()->selleruserid;
}

$checkuser = Items::checkuser($selleruserid);

场景2:遍历所有推荐商品的selleruserid

如果要处理每个商品的selleruserid,用循环遍历集合:

$featured['items'] = Items::with('Ratings')
    // 省略查询代码
    ->get();

foreach ($featured['items'] as $item) {
    $selleruserid = $item->selleruserid;
    $checkuser = Items::checkuser($selleruserid);
    // 此处添加你的业务逻辑
}

额外提示

  • 必须确认是单个模型实例时,才能用->访问属性,集合类型需先提取单个元素。
  • 如果查询仅需一条数据,可直接用first()代替get()获取单个模型实例,但要处理查询为空的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:01:10