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;
我是 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;