gpt4 book ai didi

php - Laravel::合并两个数据库查询对象

转载 作者:可可西里 更新时间:2023-10-31 23:03:25 26 4
gpt4 key购买 nike

我的游戏模型中有一个方法可以检索在一个数据库的表中注册的所有游戏的列表,遍历找到的每个游戏并从另一个数据库获取数据,最后随机抓取一个从数据库中提取图像 URL 并将其附加到统计对象。还迷茫吗?

别再迷茫了,方法是这样的:

public static function getStats($player, $cache = 30) {

// Return a collection of all games registered from the website database

$games = Game::get(['game']);

foreach($games as $game) {

// For each iteration, return the statistics from the games database for that game


// Grab game meta information from the website database, $game->game is the game name.

$list = Game::where('game', $game->game)->remember($cache)->first();


// From the game database, retrieve the statistics

$stats[$game->game] = DB::connection('game')->table($list->stats_table)
->select(DB::raw($list->statistics))
->where('Username', $player)
->remember($cache)
->first();

// Grab a random map image from the game database

$stats[$game->game]['map'] = DB::connection('game')->table('Maps')
->select('Image')
->orderBy(DB::raw('RAND()'))
->remember($cache)
->first();


}

// Finally, return the statistics from the game paired with a random map image from the game

return $stats;

}

我想将 map 查询附加到 $stats 上,这样它就在一个地方,目前该方法失败的原因是:不能将 stdClass 类型的对象用作数组

如果没有 map ,在 $stats 上循环时,它是一个以游戏名称为键的游戏统计数据数组。

如果您仍然感到困惑(我不会怪您),请发表评论,我会解释更多。

编辑:

这是我使用 ->merge() 的尝试:

public static function getStats($player, $cache = 30) {

// Return a collection of all games registered from the website database

$games = Game::get(['game']);

foreach($games as $game) {

// For each iteration, return the statistics from the games database for that game


// Grab game meta information from the website database

$list = Game::where('game', $game->game)->remember($cache)->first();


// From the game database, retrieve the statistics

$stats[$game->game] = DB::connection('game')->table($list->stats_table)
->select(DB::raw($list->statistics))
->where('Username', $player)
->remember($cache)
->first();

// Grab a random map image from the game database

$map = DB::connection('game')->table('Maps')
->select('Image')
->orderBy(DB::raw('RAND()'))
->remember($cache)
->first();

$stats[$game->game] = $stats[$game->game]->merge($map);



}

// Finally, return the statistics from the game paired with a random map image from the game

return $stats;
}

这导致 调用未定义的方法 stdClass::merge() 运行 Laravel 4.2。

最佳答案

merge()

merge 方法将给定的数组合并到原始集合中。如果给定数组中的字符串键与原始集合中的字符串键匹配,则给定数组的值将覆盖原始集合中的值

该方法的唯一参数是应该合并的集合。这是一个例子。

<?php

// app/routes.php

Route::get('/', function()
{
$a = Album::where('artist','Something Corporate')
->get();
$b = Album::where('artist','Matt Nathanson')
->get();

$result = $a->merge($b);

$result->each(function($album)
{
echo $album->title.'<br />';
});
});

其他

$array = array_merge($stats[$game->game]->toArray(), $map->toArray()); 
return Response::json($array);

关于php - Laravel::合并两个数据库查询对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com