Laravel超初級でつまづいたこと【解決済み】
PHPのフレームワークの一つであるLaravelと、ユーザーインターフェイスを構築するためのプログレッシブフレームワークであるVue.jsを勉強しようと思い、こちらのブログを参考にさせて頂き、自分でもやってみました。↓↓↓
Laravelとvueの連携!データベース内の一覧を表示する方法 – console dot log
Laravelのマイグレーションを使ってお笑い芸人のコンビ名のデータベースを作成し、Vue.js で表示さよう!というものです。至ってシンプル!
ということで、早速やってみたのですがーー。
すぐつまづくんですよね。その辺の道で言うと、ほんのちょっとした段差やのに...。ゆっくりと、しっかりと足上げて歩いてるつもりなのになんでつまづくねん!と、自分の知識不足、力不足に辟易しながら、もう同じところでつまづかないようにここに書いて、段差を取り除いておこうと思います。
何につまづいたか?
まずつまずいたのは、テストデータを作った後のマイグレーションの実行です。(その前にmysqlにデータベースを作っていなくてエラーが出たのは、ここでは割愛。)
php artisan migrate
このコマンドでテーブルができるはずなのですが...
テーブルが作成されなかったのです!
よくよく見てみると...
[vagrant@toshikisugiyama laravel_vue]$ cat database/migrations/2018_12_10_010547_create_comedians_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateComediansTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comedians', function (Blueprint $table) {
$table->increments('id');
$table->increments('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('comedians');
}
}
追加した名前フィールドがstring
ではなくincrements
になってる...。
string
にして再度php artisan migrate
。
[vagrant@toshikisugiyama laravel_vue]$ php artisan migrate;
Migrating: 2018_12_10_010547_create_comedians_table
Migrated: 2018_12_10_010547_create_comedians_table
[vagrant@toshikisugiyama laravel_vue]$
いけました。
mysql> show tables;
+--------------------------+
| Tables_in_laravel_vue_db |
+--------------------------+
| comedians |
| migrations |
+--------------------------+
2 rows in set (0.00 sec)
mysql> desc comedians;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql>
データも入っています!
しかしそれだけでは終わらなかった。
次はphp artisan db:seed
です。
[vagrant@toshikisugiyama laravel_vue]$ php artisan db:seed
Seeding: ComediansTableSeeder
ReflectionException : Class ComediansTableSeeder does not exist
at /home/vagrant/laravel_vue_lesson/laravel_vue/vendor/laravel/framework/src/Illuminate/Container/Container.php:779
775| if ($concrete instanceof Closure) {
776| return $concrete($this, $this->getLastParameterOverride());
777| }
778|
> 779| $reflector = new ReflectionClass($concrete);
780|
781| // If the type is not instantiable, the developer is attempting to resolve
782| // an abstract type such as an Interface of Abstract Class and there is
783| // no binding registered for the abstractions so we need to bail out.
Exception trace:
1 ReflectionClass::__construct("ComediansTableSeeder")
/home/vagrant/laravel_vue_lesson/laravel_vue/vendor/laravel/framework/src/Illuminate/Container/Container.php:779
2 Illuminate\Container\Container::build("ComediansTableSeeder")
/home/vagrant/laravel_vue_lesson/laravel_vue/vendor/laravel/framework/src/Illuminate/Container/Container.php:658
Please use the argument -v to see more details.
こうですね。
ComediansTableSeeder
クラスが無いようです。でも、作ってるんです。
調べると、どうやらcomposer dump-autoload
するといいようです。
[vagrant@toshikisugiyama laravel_vue]$ composer dump-autoload
-bash: composer: コマンドが見つかりません
でもcomposer
コマンドが見つからない!
[vagrant@toshikisugiyama laravel_vue]$ php composer.phar
Could not open input file: composer.phar
[vagrant@toshikisugiyama laravel_vue]$ which composer
/usr/bin/which: no composer in (/home/vagrant/.pyenv/plugins/pyenv-virtualenv/shims:/home/vagrant/.pyenv/shims:/home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/home/vagrant/.nodebrew/current/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
[vagrant@toshikisugiyama laravel_vue]$ echo $PATH
/home/vagrant/.pyenv/plugins/pyenv-virtualenv/shims:/home/vagrant/.pyenv/shims:/home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/home/vagrant/.nodebrew/current/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin
パスが通ってないのか?
[vagrant@toshikisugiyama laravel_vue]$ ls /usr/local/bin/composer
composer.phar
解決方法は↓これでした。
composer: command not found と Could not open input file :/usr/local/bin/composer.phar からの対処 - Qiita
[vagrant@toshikisugiyama laravel_vue]$ alias composer="php /usr/local/bin/composer/composer.phar"
再度、
[vagrant@toshikisugiyama laravel_vue]$ composer dump-autoload
Generating optimized autoload files> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 3743 classes
そして、
[vagrant@toshikisugiyama laravel_vue]$ php artisan db:seed
Seeding: ComediansTableSeeder
Database seeding completed successfully.
たどり着きました!
mysql> select * from comedians;
+----+-----------------------------------+---------------------+---------------------+
| id | name | created_at | updated_at |
+----+-----------------------------------+---------------------+---------------------+
| 1 | ビートたけし | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 2 | タモリ | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 3 | 明石家さんま | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 4 | ダウンタウン | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 5 | とんねるず | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 6 | ウッチャンナンチャン | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 7 | 爆笑問題 | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 8 | ナインティナイン | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 9 | ロンドンブーツ1号2号 | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
| 10 | キングコング | 2018-12-10 02:35:37 | 2018-12-10 02:35:37 |
+----+-----------------------------------+---------------------+---------------------+
10 rows in set (0.00 sec)
データも入ってます!
その後、php artisan serve --host=192.168.33.10 --port=8000
のところや、「viewが見つかりません」のエラーを乗り越え、
無事、
できました!
今回使ったのは、Laravel、Vue.js、bootstrap です。