演習課題「日記アプリに、投稿者名を追加する」
右の環境には、Laravelで「mydiary」ディレクトリに日記アプリを作成してあります。ArticleモデルはUserモデルと関連付けしてあります。
このアプリの詳細ページで、日記の投稿者名を表示させてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、サーバを起動し、問題文に関するページにアクセスできる状態にしてください。
#07:お店情報にユーザー情報を追加しよう
ここでは、lunchmapアプリのお店情報にユーザー情報を追加します。そのために、shopsテーブルにuser_idカラムを追加して、usersテーブルと関連付けます。
kirisima:
- Email: info@paiza.jp
- Password: k1r1s1m@
paiza:
- Email: foo@paiza.jp
- Password: p3a.i1z4a
$ cd lunchmap
$ php artisan make:migration add_user_id_to_shops_table --table=shops
database/migrations/20xx_xx_xx_xxxxxx_add_user_id_to_shops_table<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddUserIdToShopsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('shops', function (Blueprint $table) {
$table->integer('user_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('shops', function (Blueprint $table) {
//
});
}
}
$ php artisan migrate
usersテーブルで、idが2以上のレコードに、user_id=2を登録する。UPDATE shops
SET user_id=2
WHERE id>=2;
なお、Usersモデルに登録されていないユーザーが、Shopsテーブルに登録してあると、お店一覧がエラーになる。
app/Shop.php<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Shop extends Model
{
public function category()
{
return $this->belongsTo('App\Category');
}
public function user()
{
return $this->belongsTo('App\User');
}
}
resources/views/index.blade.php@extends('layout')
@section('content')
<h1>お店一覧</h1>
<table class='table table-striped table-hover'>
<tr>
<th>カテゴリ</th><th>店名</th><th>住所</th><th>投稿者</th>
</tr>
@foreach ($shops as $shop)
<tr>
<td>{{ $shop->category->name }}</td>
<td>
<a href={{ route('shop.detail', ['id' => $shop->id]) }}>
{{ $shop->name }}
</a>
</td>
<td>{{ $shop->address }}</td>
<td>{{ $shop->user->name }}</td>
</tr>
@endforeach
</table>
@auth
<div>
<a href={{ route('shop.new') }} class='btn btn-outline-primary'>新しいお店</a>
<div>
@endauth
@endsection
- Laravel:カラムを追加する - Qiita
https://qiita.com/usaginooheso/items/6f307a15b5f7d5dd981f
- データベース:マイグレーション 5.7 Laravel
https://readouble.com/laravel/5.7/ja/migrations.html
- Laravel5.7: ログイン機能を追加する - Qiita
https://qiita.com/sutara79/items/fdbfbf2a8f86f7d8f7fb
- Laravel5.7: postsとusersを関連させる - Qiita
https://qiita.com/sutara79/items/9e57e7af03b65e0d6047