スポンサーリンク

【Laravel】コントローラー、モデル、マイグレーションを使って理解する

こちらこちらのとこちら記事を参考に進める

 

モデルとマイグレーションファイル作成

[vagrant@localhost git_my_shared]$ php artisan make:model Scraping –migration
Model created successfully.
Created Migration: 2018_03_14_172147_create_scrapings_table
[vagrant@localhost git_my_shared]$ php artisan migrate
Migrating: 2018_03_14_172147_create_scrapings_table
Migrated: 2018_03_14_172147_create_scrapings_table
[vagrant@localhost git_my_shared]$

scrapingsというテーブルが作成されました

 

しかしこれで作成したテーブル構造は使わないので一旦削除

[vagrant@localhost git_my_shared]$ php artisan migrate:rollback
Rolling back: 2018_03_14_172147_create_scrapings_table
Rolled back: 2018_03_14_172147_create_scrapings_table

 

テーブルも消えました

実際作成するテーブル構造情報をmigrationファイルに記述する

public function up()
{
Schema::create(‘scrapings’, function (Blueprint$table) {
$table->increments(‘id’);
$table->string(‘name’, 128);
$table->timestamps();
});
}

続いて、初期データを用意するためシーダーを作成します。

php artisan make:seed ScrapingTableSeeder

[vagrant@localhost git_my_shared]$ php artisan make:seed ScrapingTableSeeder
Seeder created successfully.
作成されたシーダーファイルのrunメソッド内を次のように編集します。
    public function run()
    {
DB::table(‘scrapings’)->insert(
[‘name’ => ‘default_user’]);
    }

作成したシーダーを実行できるようapp/database/seeds/DatabaseSeeder.phpを編集します。

public function run()
{
// $this->call(UsersTableSeeder::class);
$this->call(ScrapingTableSeeder::class);
}

再度テーブルを作成

今度はシーダーも一緒に作成

[vagrant@localhost git_my_shared]$ php artisan migrate –seed
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2018_03_14_180402_create_scrapings_table
Migrated: 2018_03_14_180402_create_scrapings_table
[vagrant@localhost git_my_shared]$

 

 

最後にコントローラーを作成

app/Http/ControllersにScrapingsController.phpというファイルを作成

以下記述

 

<?php
namespace App\Http\Controllers;
// formからpost値を取得するのに使用
use Illuminate\Http\Request;
// DB接続に使用
use Illuminate\Support\Facades\DB;
// Goutteに使用
use Goutte\Client;
// モデルを使用
use App\Scraping;
class ScrapingsController extends Controller
{
publicfunctionIndex() {
echo’ScrapingsController Index()’;
// testInsert()はstatic関数なのでインスタンスを作成しなくても呼び出せる
//Scraping::testInsert();
$obj = newScraping;
$obj->testInsert2();
// resources/views/test.phpを呼び出す
returnview(‘test’);
}
}
モデルもちょっと修正
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
// DB接続に使用
use Illuminate\Support\Facades\DB;
class Scraping extends Model
{
//
//public function testInsert() {
publicstaticfunctiontestInsert() {
DB::table(‘scrapings’)->insert(
[‘name’ => ‘default_user’]);
echo’testInsert() end’;
}
//public function testInsert() {
publicfunctiontestInsert2() {
DB::table(‘scrapings’)->insert(
[‘name’ => ‘default_user’]);
echo’testInsert() end’;
}
}

 

ルーティングの登録

routes/web.phpに以下追記

route::get(‘scrapings/index’, ‘ScrapingsController@index’);

 

 

おまけ

 

マイグレーションを何回か作り直してるとこんなエラーが出ることがある

[vagrant@localhost git_my_shared]$ php artisan make:model Scraping –migration
Model created successfully.

In ClassLoader.php line 444:

include(/vagrant/git_my_shared/vendor/composer/../../database/migrations/2018_03_14_172147_create_scrapings_table.ph
p): failed to open stream: No such file or directory

 

artisan make:migration が実行時にcomposerのclassmapを更新しているためで、
classmapを最適化しなおしてやればエラーが出なくなります。

こちら参考

[vagrant@localhost git_my_shared]$ composer dump-autoload -o
Generating optimized autoload files
[vagrant@localhost git_my_shared]$ php artisan make:model Scraping –migration
Model created successfully.
Created Migration: 2018_03_14_180402_create_scrapings_table

 

 

 

 

 

 

以下途中で挫折したやつ

——————————————————————————–

 

こちらの記事を参考に進める

 

モデル作成

[vagrant@localhost git_my_shared]$ php artisan make:model Scraping
Model created successfully.

[vagrant@localhost git_my_shared]$ ls -la app/
total 14
drwxrwxrwx 1 vagrant vagrant 4096 Mar 13 19:10 .
drwxrwxrwx 1 vagrant vagrant 4096 Mar 7 12:37 ..
drwxrwxrwx 1 vagrant vagrant 0 Feb 28 14:40 Console
drwxrwxrwx 1 vagrant vagrant 0 Feb 28 14:40 Exceptions
drwxrwxrwx 1 vagrant vagrant 0 Feb 28 14:40 Http
drwxrwxrwx 1 vagrant vagrant 4096 Feb 28 14:40 Providers
-rwxrwxrwx 1 vagrant vagrant 104 Mar 13 19:10 Scraping.php
-rwxrwxrwx 1 vagrant vagrant 540 Feb 28 14:40 User.php

 

 

マイグレーションファイル作成

マイグレーションファイルってのは「どんなテーブルを作るか」というテーブルの設計書

[vagrant@localhost git_my_shared]$ php artisan make:migration scraping_table
Created Migration: 2018_03_13_185200_scraping_table

[vagrant@localhost git_my_shared]$ ls -la database/migrations/
total 11
drwxrwxrwx 1 vagrant vagrant 4096 Mar 13 18:52 .
drwxrwxrwx 1 vagrant vagrant 4096 Feb 28 14:40 ..
-rwxrwxrwx 1 vagrant vagrant 781 Feb 28 14:40 2014_10_12_000000_create_users_table.php
-rwxrwxrwx 1 vagrant vagrant 715 Feb 28 14:40 2014_10_12_100000_create_password_resets_table.php
-rwxrwxrwx 1 vagrant vagrant 420 Mar 13 18:52 2018_03_13_185200_scraping_table.php

 

参考記事のとおりに内容を編集する

 

続いて、初期データを用意するためシーダーを作成

[vagrant@localhost git_my_shared]$ php artisan make:seed ScrapingSeeder
Seeder created successfully.

 

 

 

コメント

タイトルとURLをコピーしました