コード例 #1
0
 public function getData(Request $request)
 {
     TaskController::checkTasks();
     $user = Auth::user();
     $x1 = $request->input('x1') - 1;
     $y1 = $request->input('y1') - 1;
     $x2 = $request->input('x2') + 1;
     $y2 = $request->input('y2') + 1;
     $cities = Grid::join('users', 'grid.owner', '=', 'users.id')->join('cities', 'grid.city_id', '=', 'cities.id')->whereBetween('x', [$x1, $x2])->whereBetween('y', [$y1, $y2])->where('city_id', '>', 0)->select('grid.x', 'grid.y', 'users.id as user_id', 'users.name as user_name', 'users.nation', 'cities.name as city_name', 'cities.capital', 'cities.id')->get();
     foreach ($cities as $city) {
         if ($city->user_id == $user->id) {
             $city->owned = true;
         } else {
             $city->owned = false;
         }
     }
     $armies = Grid::leftJoin('users', 'grid.owner', '=', 'users.id')->whereBetween('x', [$x1, $x2])->whereBetween('y', [$y1, $y2])->where('army_id', '>', 0)->select('grid.*', 'users.name as user_name', 'users.nation')->get()->toArray();
     foreach ($armies as &$hex) {
         $army = Army::where('id', $hex['army_id'])->first();
         if ($army['user_id'] == $user->id) {
             $hex['army'] = $army->toArray();
             $hex['army']['path'] = Path::join('grid', 'paths.hex_id', '=', 'grid.id')->where('path_id', $army['path_id'])->select('paths.finished_at', 'grid.x', 'grid.y')->get()->toArray();
         }
         $hex['army']['user_name'] = $army->user->name;
         $hex['army']['nation'] = $army->user->nation;
     }
     return ['cities' => $cities, 'armies' => $armies];
 }