Lumen - 分页和结果编辑

Lumen - pagination and result editing

我是 Lumen 的新手,正在尝试制作一个简单的 REST API 应用程序。我希望其中一个端点能够显示“storeItems”中的所有记录 table 但向每个记录添加一个字段及其类别并对它们进行分页。

所以现在我有通常的

$products = DB::table('storeItems as i')
    ->where('i.B2BAvailable', '=', '1')
    ->select('i.title','i.EAN','i.vendor','i.productType','i.ID as productID','i.releaseDate',DB::raw('(CASE WHEN (i.releaseDate > NOW()) THEN 1 ELSE 0 END) AS announced'))
    ->orderBy('i.releaseDate', 'desc')
    ->paginate(100);
    return response()->json($products);

这给出了预期的结果,但是如果我想遍历结果并添加来自不同 table 的字段...像这样:

foreach($products as $product) {
        $genres = DB::table('sCategoryConnector as ggc')
        ->join('sCatGenre as gg','gg.ID','=','ggc.ID_sCatGenre')
        ->where('ggc.EAN', '=', DB::raw("'".$product->EAN."'"))
        ->select('gg.tag')
        ->orderBy('gg.ID', 'asc')
        ->get();
        
        if (count($genres) > 0) {
            $i=0;
            foreach($genres as $genre) {
                //$product['genres'][$i] = $genre['tag'];
                $propName = 'genre'.$i;
                $product->genres->$propName = $genre->tag;
                $i++;
            }
        }
    }

但 Lumen 正在输出:从空值错误创建默认对象并标记此行:

$product->genres->$propName = $genre->tag;

我做错了什么?先谢谢了。

所以我有点着急...应该像这样替换分配类型:

if (count($genres) > 0) {
            $i=0;
            $product->genres = $genres;
            /*
            foreach($genres as $genre) {
                //$product['genres'][$i] = $genre['tag'];
                $propName = 'genre'.$i;
                $product->genres->$propName = $genre->tag;
                $i++;
            }
            */
        }

所以将新 属性 分配给 StdClass 对象的正确方法.... $product->genres = $genres;