演習課題「特定職業のプレイヤーインデックスを表示する」
右の環境には、特定職業ページを表示するプログラムが作成してあります。このプログラムを修正して、該当職業のプレイヤーのidと名前を表示するようにしてください。
特定職業ページは、「show_job.php?id=1」で表示することができます。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#09:特定職業のプレイヤーインデックスを表示する - その2
ここでは、2回に渡って、PHPとEloquentの具体例として、特定の職業の詳細情報と、そこに属するプレイヤーを表示するページを作っています。今回は、特定の職業に属するプレイヤー一覧を表示します。
public_html/index.php<?php
require_once './vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager;
$db->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mydb',
'username' => 'root',
'password' => ''
]);
$db->setAsGlobal();
$db->bootEloquent();
use Illuminate\Database\Eloquent\Model;
class Player extends Model {
public $timestamps = false;
public function job() {
return $this->belongsTo('Job');
}
}
class Job extends Model {
}
$players = Player::all();
$jobs = Job::all();
$message = 'hello world';
require_once 'views/index.tpl.php';
public_html/views/index.tpl.php<!DOCTYPE html>
<html lang='ja'>
<?php include('header.inc.php'); ?>
<body>
<h1>Player List</h1>
<p><?= $message ?></p>
<?php foreach ($players as $player) { ?>
<p>
<?= $player->id ?>,
<?= $player->name ?>,
<?= $player->level ?>,
<?= $player->job->job_name ?>,
<a href='show_player.php?id=<?= $player->id ?>'>表示</a>
</p>
<?php } ?>
<h2>Job List</h2>
<?php foreach ($jobs as $job) { ?>
<p>
<?= $job->id ?>,
<?= $job->job_name ?>,
<?= $job->vitality ?>,
<?= $job->strength ?>,
<a href='show_job.php?id=<?= $job->id ?>'>表示</a>
</p>
<?php } ?>
<?php include('footer.inc.php'); ?>
</body>
</html>
public_html/show_player.php<?php
require_once './vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager;
$db->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mydb',
'username' => 'root',
'password' => ''
]);
$db->setAsGlobal();
$db->bootEloquent();
use Illuminate\Database\Eloquent\Model;
class Player extends Model {
public $timestamps = false;
public function job() {
return $this->belongsTo('Job');
}
}
class Job extends Model {
}
if(isset($_REQUEST['id'])) {
$id = $_REQUEST['id'];
}
$player = Player::find($id);
$message = 'This is paiza';
require_once 'views/profile.tpl.php';
public_html/views/profile.tpl.php<!DOCTYPE html>
<html lang='ja'>
<?php include('header.inc.php'); ?>
<body>
<h1>Player profile</h1>
<p><?= $message ?></p>
<ul>
<li>ID:<?= $player->id ?></li>
<li>名前:<?= $player->name ?></li>
<li>レベル:<?= $player->level ?></li>
<li>職業id:<?= $player->job_id ?></li>
<li>職業名:<?= $player->job->job_name ?></li>
</ul>
<p><a href='index.php'>リストに戻る</a></p>
<?php include('footer.inc.php'); ?>
</body>
</html>
public_html/show_job.php<?php
require_once './vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager;
$db->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mydb',
'username' => 'root',
'password' => ''
]);
$db->setAsGlobal();
$db->bootEloquent();
use Illuminate\Database\Eloquent\Model;
class Player extends Model {
public $timestamps = false;
public function job() {
return $this->belongsTo('Job');
}
}
class Job extends Model {
public function player() {
return $this->hasMany('Player');
}
}
if(isset($_REQUEST['id'])) {
$id = $_REQUEST['id'];
}
$job = Job::find($id);
$message = 'This is paiza';
require_once 'views/job_profile.tpl.php';
public_html/views/job_profile.tpl.php<!DOCTYPE html>
<html lang='ja'>
<?php include('header.inc.php'); ?>
<body>
<h1>Job profile</h1>
<p><?= $message ?></p>
<ul>
<li>ID:<?= $job->id ?></li>
<li>職業名:<?= $job->job_name ?></li>
<li>体力:<?= $job->vitality ?></li>
<li>強さ:<?= $job->strength ?></li>
</ul>
<h2>Player</h2>
<?php foreach ($job->player as $player) { ?>
<p>
<?= $player->id .','.$player->name ?>
<a href='show_player.php?id=<?= $player->id; ?>'>表示</a>
</p>
<?php } ?>
<p><a href='index.php'>リストに戻る</a></p>
<?php include('footer.inc.php'); ?>
</body>
</html>
- Eloquent をおさらい - Qiita
https://qiita.com/shosho/items/5ca6bdb880b130260586
- Eloquent ORMについてなにも知らなかった(1) - 基本的な使い方編 - - zuckey blog
https://blog.zuckey17.org/entry/2018/01/14/214919
- Eloquent:利用の開始 5.6 Laravel
https://readouble.com/laravel/5.6/ja/eloquent.html
- Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans
https://laravel.com/docs/5.6/eloquent