Нужна помощь с переносом с php/pdo на laravel

215
03 апреля 2017, 08:34

Доброго времени суток, есть старый проект который написан на php/pdo. Стоит задача перенести на laravel 5.4. Перенёс все страницы кроме этой. Есть Контроллер - StatsController и stats.blade.php Как в них перенести данный код?

try{
    $dbh = new PDO($dsn,$user,$password);
    $dbh->exec('SET NAMES utf8');
}
catch(PDOException $e){
    echo 'Error :'.$e->getMessage();
}
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet>
    </head>
    <body>
            <div class="content container">
              <table class="table table-hover table-bordered">
                  <thead>
                      <tr>
                          <th class="text-center">Name</th>
                          <th class="text-center">K</th>
                          <th class="text-center">D</th>
                          <th class="text-center">Points</th>
                      </tr>
                  </thead>
                  <tbody>
                    <?
                    $sql = $dbh->query("SELECT * FROM stats");
                    $res=$sql->fetch(PDO::FETCH_BOTH);

                    foreach($sql as $res){
                        $sql2 = $dbh->query("SELECT * FROM skill");
                        $res2=$sql2->fetch(PDO::FETCH_BOTH);
                                $skill = null;
                                foreach($sql2 as $res2){
                                    if($skill!=null){
                                        continue;
                                    }
                                    if((int)$res2['max']>=(int)$res['skill']){
                                        $skill=$res2['title'];
                                    }
                                }
                    ?>
                      <tr>
                          <td class="text-center"><?=$res['name'];?></td>
                          <td class="text-center"><?=$res['kills'];?></td>
                          <td class="text-center"><?=$res['deaths'];?></td>
                          <td class="text-center"><?=$skill;?></td>
                      </tr>
                    <?
                    }
                    ?>
                  </tbody>
              </table>
                </div>
            </div>
        </div>
    </body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</html>
Answer 1

Примерно так должен выглядеть код, немного оптимизировал ещё его, что как называть и как размещать решать вам:

Контроллер:

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class StatsController extends Controller
{
    public function index()
    {
        // $sql = $dbh->query("SELECT * FROM stats");
        // $res=$sql->fetch(PDO::FETCH_BOTH);
        $stats = DB::table('stats')->get();
        // $sql2 = $dbh->query("SELECT * FROM skill");
        // $res2=$sql2->fetch(PDO::FETCH_BOTH);
        $skills = DB::table('skill')->get();
        return view('stats.index', compact('stats', 'skills'));
    }
}

Файл представления stats.index:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet>
    </head>
    <body>
            <div class="content container">
              <table class="table table-hover table-bordered">
                  <thead>
                      <tr>
                          <th class="text-center">Name</th>
                          <th class="text-center">K</th>
                          <th class="text-center">D</th>
                          <th class="text-center">Points</th>
                      </tr>
                  </thead>
                  <tbody>
                    @foreach($stats as $stat)
                      @include('stats.item')
                    @endforeach
                  </tbody>
              </table>
                </div>
            </div>
        </div>
    </body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</html>

Файл представления stats.item:

<tr>
    <td class="text-center">{{ $stat->name }}</td>
    <td class="text-center">{{ $stat->kills }}</td>
    <td class="text-center">{{ $stat->deaths }}</td>
    <td class="text-center">
        @foreach($skills as $skill)
            @if($skill->max >= $stat->skill)
                {{ $skill->title }}
                @break;
            @endif
        @endforeach
    </td>
</tr>
READ ALSO
Поставил postgresql не получается зайти с pgadmin

Поставил postgresql не получается зайти с pgadmin

Поставил postgresql не получается зайти с pgadminПри попытке зарегистрировать новый сервер выдает ошибку: "Error connecting to the server: не удалось подключиться...

381
Как сделать своё стандартное меню (с пунктами О нас, Контакты и т.д.) в Opencart?

Как сделать своё стандартное меню (с пунктами О нас, Контакты и т.д.) в Opencart?

Нужно, чтобы добавлялся классactive к выбранному пункту

302
sql запрос &ldquo;лента новостей&rdquo;

sql запрос “лента новостей”

Доброго времени сутокПомогите сформировать sql запрос так называемой "ленты новостей" тоесть выводить только записи своих друзей

251
html 5 и тег audio (1 плеер и треки на странице)

html 5 и тег audio (1 плеер и треки на странице)

Хочу сделать 1 плеер сверху страницы и ниже будут MP3 файлы с ссылками на нихНужно сделать так, чтобы при нажатии кнопки рядом с ссылками, ссылка...

263