愛的code
‧
結果顯示也正常
Generating optimized autoload files> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 4077 classes
然後我執行db:seed
php artisan db:seed --class 88asSeeder
就一直報錯了如下:
Illuminate\Contracts\Container\BindingResolutionException : Target class [88asSeeder] does not exist.
at C:\AppServ\www\3zzz\etk\vendor\laravel\framework\src\Illuminate\Container\Container.php:805
802| try {
803| $reflector = new ReflectionClass($concrete);
804| } catch (ReflectionException $e) {
> 805| throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
806| }
808| // If the type is not instantiable, the developer is attempting to resolve
809| // an abstract type such as an Interface or Abstract Class and there is
Exception trace:
1 ReflectionException::("Class 88asSeeder does not exist")
C:\AppServ\www\3zzz\etk\vendor\laravel\framework\src\Illuminate\Container\Container.php:803
2 ReflectionClass::__construct("88asSeeder")
C:\AppServ\www\3zzz\etk\vendor\laravel\framework\src\Illuminate\Container\Container.php:803
Please use the argument -v to see more details.
如上,有請哪位高手解迷津,幫幫忙!
我把 88asSeeder 改成 asSeeder後,報錯已經不一樣了如下:
Symfony\Component\Debug\Exception\FatalThrowableError : Call to undefined function Str_random()
at C:\AppServ\www\3zzz\etk\database\seeds\asSeeder.php:19
15| $arr = [];
16| for ($i=0; $i <20 ; $i++) {
17| # code...
18| $tmp = [];
> 19| $tmp['username'] = Str_random(20);
20| $tmp['password'] = Str_random(20);
21| $tmp['email'] = rand(100000, 9999999).'@gmail.com';
22| $arr[] = $tmp;
23| }
Exception trace:
1 asSeeder::run()
C:\AppServ\www\3zzz\etk\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:32
2 call_user_func_array([])
C:\AppServ\www\3zzz\etk\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:32
Please use the argument -v to see more details.
可見似乎是 class 不存在的問題 已經好了,但新的問題是? 能否也指點一下迷津!謝謝!
我沒有定義 Str_random 、tr_random 或 任何函數,難道是我還需要引入甚麼嗎?
我使用 $tmp['email'] = rand(100, 9999).'@gmail.com';
想要產生一些亂數的 email ,也好像有問題,因為生成的資料如下圖:
在" @gmail.com" 之前的數字,怎麼都一樣 rand(100000, 9999999)
不是會從100000~9999999之間亂數產生嗎?
我使用 `$tmp['email'] = rand(100, 9999).'@gmail.com';`
想要產生一些亂數的 email ,也好像有問題,因為生成的資料如下圖:
![https://ithelp.ithome.com.tw/upload/images/20200111/2012175435kQ1JxITz.png](https://ithelp.ithome.com.tw/upload/images/20200111/2012175435kQ1JxITz.png)
在" @gmail.com" 之前的數字,怎麼都一樣 rand(100000, 9999999)
不是會從100000~9999999之間亂數產生嗎?
$tmp = [];
$tmp['username'] = $this::str_random(10);
$tmp['password'] = $this::srand(0, 1);
$tmp['email'] = $this::rand(100, 9999).'@gmail.com';
$arr[] = $tmp;
DB::table('as')->insert($arr);
以後,變成報錯如下
Symfony\Component\Debug\Exception\FatalThrowableError : Call to undefined method asSeeder::str_random()
at C:\AppServ\www\3zzz\etk\database\seeds\asSeeder.php:19
15| $arr = [];
16| for ($i=0; $i <20 ; $i++) {
17| # code...
18| $tmp = [];
> 19| $tmp['username'] = $this::str_random(10);
20| $tmp['password'] = $this::srand(0, 1);
21| $tmp['email'] = $this::rand(100, 9999).'@gmail.com';
22| $arr[] = $tmp;
23| }
$tmp = [];
$tmp['username'] = $this::str_random(10);
$tmp['password'] = $this::srand(0, 1);
$tmp['email'] = $this::rand(100, 9999).'@gmail.com';
$arr[] = $tmp;
DB::table('as')->insert($arr);
以後,變成報錯如下
Symfony\Component\Debug\Exception\FatalThrowableError : Call to undefined method asSeeder::str_random()
at C:\AppServ\www\3zzz\etk\database\seeds\asSeeder.php:19
15| $arr = [];
16| for ($i=0; $i <20 ; $i++) {
17| # code...
18| $tmp = [];
> 19| $tmp['username'] = $this::str_random(10);
20| $tmp['password'] = $this::srand(0, 1);
21| $tmp['email'] = $this::rand(100, 9999).'@gmail.com';
22| $arr[] = $tmp;
23| }
str_random 用得有問題的話 試試這個吧
https://laravel.com/docs/master/helpers#method-str-random
不過產生測試資料不是用 factory 更好嗎?
email 還會照格式幫你產生
此外,很多程式語言 class 名稱只接受大寫英文字母開頭,部分接受小寫,數字開頭幾乎沒見過
因為剛接觸 所以 factory 也還需要摸索一下, Seeder 先學會了有空再研究factory。
昨天經小魚大大提醒把表名去掉數字換成全英文後,找不到class 問題已經解決。
而剛剛我參考了f107110126提供的資料然後
將aaaSeeder中的 str_random 換成 str::random 如下:
composer dump-autoload
php artisan db:seed --class=aaaSeeder
結果完全OK如下圖:
真棒!感謝兩位賜教,令人感覺處處有溫情,溫暖技術圈。謝謝啦!