Laravelのモデルを試してみる
Laravelのルーティングとコントローラーを試してみる https://yk5656.hatenablog.com/entry/20210102/1609513200
の続き
データを登録
データベースを作成して、テーブルを作成し、データを入れる。
$ mysql -u root > CREATE DATABASE laravel; > USE laravel; > CREATE TABLE books ( id int NOT NULL AUTO_INCREMENT, name varchar(100), price int, PRIMARY KEY (id) ); > INSERT INTO books (name, price) VALUES ('aaa', 1000); > INSERT INTO books (name, price) VALUES ('bbb', 2000); > INSERT INTO books (name, price) VALUES ('ccc', 3000);
モデルの作成
モデルを作成。
$ php artisan make:model Book
$ cat app/Book.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Book extends Model { // }
表示
「use App\Book;」を追加し、booksテーブルのデータを全て取得するようコントローラを修正。
$ vi app/Http/Controllers/HelloController.php
・・・
use App\Book;
class HelloController extends Controller
{
public function index()
{
$books = Book::all();
return view('hello3', ['books' => $books]);
}
}
ビューを修正。
$ vi resources/views/hello3.blade.php
@foreach($books as $book) <h3>{{ $book->name }} - {{ $book->price }}</h3> @endforeach
http://192.168.33.10:8000/hello3
にアクセスすると、booksテーブルのデータが表示される。
補足
ちなみに、モデルを作成する際に「 --migration」を付けると、
$ php artisan make:model Article --migration
モデルが作られるだけでなく、
$ cat app/Article.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { // }
マイグレーションファイルも作成される。
$ cat database/migrations/2021_02_05_042822_create_articles_table.php
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('articles'); } }